clear
clc
A=imread('ab4.jpg');
I=rgb2gray(A);
Imsi=size(I);
box= imhist(I,256)/numel(I);
figure,bar(box);
I = imadjust(I,[45/255 140/255],[0 1]);
box=imhist(I,256)/numel(I);
figure,bar(box);
BW = edge(I,'canny');
[H,T,R] =hough(BW,'RhoResolution',0.1,'ThetaResolution',0.2);
figure;imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
colormap('hot')
xlabel(' heta'), ylabel('ho');
axis on, axis normal, hold on;
P = houghpeaks(H,4,'threshold',ceil(0.3*max(H(:))),'NHoodSize',[7,7]);
x = T(P(:,2)); y = R(P(:,1));
plot(x,y,'s','color','white');
lines = houghlines(BW,T,R,P,'FillGap',15,'MinLength',9);
figure,imshow(I),hold on
max_len = 0;
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
% Plot beginnings and ends of lines
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
% Determine the endpoints of the longest line segment
len = norm(lines(k).point1 - lines(k).point2);
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
% highlight the longest line segment
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
%
if abs(lines(1).theta-lines(2).theta)<20,lines(2)=lines(3),end;
if abs(lines(1).theta-lines(2).theta)<20,lines(2)=lines(4),end;
% dot
ro=[lines(1).rho;lines(2).rho];
AA=[cosd(lines(1).theta),sind(lines(1).theta);...
评论5