MATLAB实现hough矫正

来源:互联网 发布:网络维护公司简介 编辑:程序博客网 时间:2024/04/27 13:57
%%
%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);
原创粉丝点击