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);
%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);
- MATLAB实现hough矫正
- MATLAB 实现Hough变换
- Matlab实现Hough直线检测
- Hough圆检测的matlab实现
- Hough变换直线检测的MATLAB实现
- Hough变换 直线检测原理及其Matlab实现
- Matlab实现Hough变换检测图像中的直线
- 基于Hough 变换的直线检测(Matlab实现)
- matlab Hough变换
- Hough变换的实现
- 基于matlab的图像hough变换
- matlab 图像分割 hough 霍夫变换
- matlab 图像分割 hough 霍夫变换
- Examples of Hough Transfer and FFT(MATLAB)
- 关于MATLAB中Hough变换提取直线
- Hough变换以及C实现
- Hough变换的C实现
- Hough
- 最小操作数
- Oracle和mysql 的一些简单命令对比参照
- su和sudo的区别与使用
- 数据挖掘十大经典算法(4) The Apriori algorithm
- 垃圾代码的清理
- MATLAB实现hough矫正
- 数据挖掘十大经典算法(5) 最大期望(EM)算法
- 一个趋于零的世界
- 学习Struts框架系列(三):声明式异常处理
- String 字符串常量String,StringBuffer与StringBuilder的区别??
- 《C++ primer》(4th)读书笔记(1 start)
- 数据挖掘十大经典算法(6) PageRank
- 快速排序的C语言实现
- Java中使用SAX方式解析XML的问题