云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 哈夫(霍夫)变换

哈夫(霍夫)变换

  • 62 次阅读
  • 3 次下载
  • 2025/7/10 20:20:52

哈夫变换

1、 利用哈夫变换数钱 clc,close all

A=imread('money2.jpg'); A=rgb2gray(A);

A=imresize(A,0.25);

figure,subplot(131),imshow(A),title('原图')

BW = edge(A,'roberts',0.04);

subplot(132),imshow(BW),title('Roberts, thresh=0.04') se1 = strel('square',3);

BW=imdilate(BW,se1);

subplot(133),imshow(BW),title('imdilate,消除边界的不连续') BW=imclearborder(BW);

figure,subplot(131),imshow(BW),title('imclearborder,清除边界上不相关部分') BW2=imfill(BW,'holes');

subplot(132),imshow(BW2),title('imfill,填补空洞') se1 = strel('square',3); BW3=bwperim(BW2);

subplot(133),imshow(BW3),title('bwperim,提取边缘')

[M,N]=size(A);

H=zeros(M,N,round(sqrt(M^2+N^2))); for row=1:M for col=1:N

if(BW3(row,col)~=0) for x0=1:M for y0=1:N

r=round(sqrt((row-x0)^2+(col-y0)^2));%半径 if r~=0

H(x0,y0,r)=H(x0,y0,r)+1;%H是累加器,三维矩阵 end end end end end end

%为了方便观察,将三维参数矩阵根据半径的不同做成不同的帧,制作成视频 for fn=1:360

[C,map]=gray2ind(mat2gray(H(:,:,fn),[0 90]),100); mov(fn)=im2frame(C,map); end

movie2avi(mov,'hough.avi')

figure%在matlab内用动画的方式按半径增长的方式显示霍夫变换得到的三维矩阵 for i = 1:50

imshow(mat2gray(H(:,:,i),[0 90]));title(num2str(i)),drawnow pause(0.3); end

%另一种表示方法,设定恰当的阈值,将超过阈值的点在三维空间标示出来 figure, hold on, [m,n,p]=size(H); for i=1:m i

for j=1:n

for k=1:p/4

if(H(i,j,k)>50)

colors=H(i,j,k)/125*[1 0 0];

plot3(i,j,k,'.','Color',colors,'MarkerSize',6); end end end end

实验结果:

哈夫变换40353025半径201510502001801601401201008010060200300

由上图可见,超过累加器阈值50的点聚集为6个不同的小范围空间内,有3个半径接近21,另外3个半径接近25,假设半径小的是5毛,半径大的是1元,则可以得到结论:图中有

4.5元。

实验总结: 由于不同钱币半径相差很小(比如5角和1元),所以拍照时必须小心排除阴影的干扰

(比如在不同方向的光照下),而且,应该注意相机与钱币的相对角度,使得图片中钱币呈圆形。

附:

视频hough.avi,可以在暴风影音中播放

搜索更多关于: 哈夫(霍夫)变换 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

哈夫变换 1、 利用哈夫变换数钱 clc,close all A=imread('money2.jpg'); A=rgb2gray(A); A=imresize(A,0.25); figure,subplot(131),imshow(A),title('原图') BW = edge(A,'roberts',0.04); subplot(132),imshow(BW),title('Roberts, thresh=0.04') se1 = strel('square',3); BW=imdilate(BW,se1); subplot(133),imshow(BW),title('imdilate,消除边界的不连续') BW=imclearborder(BW);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com