目录
💥1 概述
📚2 运行结果
🎉3 参考文献
👨💻4 Matlab代码
💥1 概述
霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。
霍夫变换采用类似于投票的方式来获取当前图像内的形状集合,该变换由Paul Hough(霍夫)于1962年首次提出。
最初的霍夫变换只能用于检测直线,经过发展后,霍夫变换不仅能够识别直线,还能识别其他简单的图形结构,常见的有圆、椭圆等。实际上,只要是能够用一个参数方程表示的对象,都适合用霍夫变换来检测。
代码分为以下部分:
- 编写一个MATLAB程序,使用直接逆滤波来恢复退化的图像。
- 编写一个MATLAB函数,用于使用(a)恒定比率和(b)自相关函数实现线性图像恢复的维纳滤波。
- 编写一个MATLAB函数,将RGB颜色空间转换为HSI。显示色调图像、饱和度图像和强度图像。
- 编写MATLAB函数,对彩色图像的强度分量进行直方图均衡,得到新的HSI图像。将新的HSI图像转换回RGB。
- 使用霍夫变换检测二进制图像中的线段。
- 考虑一个由不重叠的小斑点组成的图像。基于阈值分割斑点。
- 考虑一个由不重叠的小斑点组成的图像。根据区域增长对斑点进行细分。
- 实现分割和合并过程,以分割具有四叉树区域的最小尺寸的不同值的图像。
- 考虑一个由小斑点组成的二进制图像。使用(a)距离变换和(b)分水岭变换对斑点进行分段。
📚2 运行结果











主函数部分代码:
function splitAndMerge()
orgImg=imread('figXray.tif');
md=input('Enter the minimum dimension of block: ');
segImg=splitmerge(orgImg,md,@predicate);
subplot(121);imshow(orgImg);title('Original Image');
subplot(122);imshow(segImg);title('Segmented Image');
end
function g = splitmerge(f,mindim,fun)
q=2^nextpow2(max(size(f)));
[row,col]=size(f);
f=padarray(f,[q-row,q-col],'post');
z=qtdecomp(f,@split_test,mindim,fun);
Lmax=full(max(z(:)));
g=zeros(size(f));
marker=zeros(size(f));
for k=1:Lmax
[vals,r,c]=qtgetblk(f,z,k);
if ~isempty(vals)
for i=1:length(r)
xlow=r(i);
ylow=c(i);
xhigh=xlow+k-1;
yhigh=ylow+k-1;
region = f(xlow:xhigh,ylow:yhigh);
flag=fun(region);
if flag
g(xlow:xhigh,ylow:yhigh)=1;
marker(xlow,ylow)=1;
end
end
end
end
g=bwlabel(imreconstruct(marker,g));
g=g(1:row,1:col);
end
function flag=predicate(region)
sd=std2(region);
m=mean2(region);
flag=(sd>10) & (m>0) & (m<125);
end
function v=split_test(b,mindim,fun)
k=size(b,3);
v(1:k)=false;
for i=1:k
quadregion=b(:,:,i);
if size(quadregion,1)<=mindim
v(i)=false;
continue
end
flag=fun(quadregion);
if flag
v(i)=true;
end
end
end
🎉3 参考文献
[1]代勤,王延杰,韩广良.基于改进Hough变换和透视变换的透视图像矫正[J].液晶与显示,2012,27(04):552-556.
部分理论引用网络文献,若有侵权联系博主删除。













![[C++]list类的模拟实现和相关函数的详解(正反向迭代器)](https://img-blog.csdnimg.cn/5723b3e66c8242a481e19af1df30e66a.png#pic_center)





