%%
%Hough变换矫正图像程序实现
clc
I1 = imread('F:\XuLiguo Project\RMB\TMatch\111.jpg');
I = rgb2gray(I1); %转换为灰度图像
I = mat2gray(I); %转换为二值图像
%%
bw = edge(I,'sobel','horizontal');
[m,n]=size(bw);
S=round(sqrt(m^2 + n^2));%S可以去到的最大值
ma = 180;
md = S;
r=zeros(md,ma);
for i=1:m
for j=1:n
if bw(i,j)==1
for k=1:ma
ru=round(abs(i*cos(k*3.14/180) + j*sin(k*3.14/180)));
r(ru+1,k)=r(ru+1,k)+1; %用来记录交点数值和角度
end
end
end
end
[m,n]=size(r);
for i=1:m
for j=1:n
if r(i,j)>r(1,1)
r(1,1) = r(i,j);
c=j; %得到最大值的交点 的角度值
end
end
end
if c<=90
rot=-c;
else
rot=180-c;
end
pic=imrotate(I1,rot,'crop');
figure(1);
imshow(pic);
%Hough变换矫正图像程序实现
clc
I1 = imread('F:\XuLiguo Project\RMB\TMatch\111.jpg');
I = rgb2gray(I1); %转换为灰度图像
I = mat2gray(I); %转换为二值图像
%%
bw = edge(I,'sobel','horizontal');
[m,n]=size(bw);
S=round(sqrt(m^2 + n^2));%S可以去到的最大值
ma = 180;
md = S;
r=zeros(md,ma);
for i=1:m
for j=1:n
if bw(i,j)==1
for k=1:ma
ru=round(abs(i*cos(k*3.14/180) + j*sin(k*3.14/180)));
r(ru+1,k)=r(ru+1,k)+1; %用来记录交点数值和角度
end
end
end
end
[m,n]=size(r);
for i=1:m
for j=1:n
if r(i,j)>r(1,1)
r(1,1) = r(i,j);
c=j; %得到最大值的交点 的角度值
end
end
end
if c<=90
rot=-c;
else
rot=180-c;
end
pic=imrotate(I1,rot,'crop');
figure(1);
imshow(pic);