离散空间广义霍夫变换。
来源:互联网 发布:java捕获被0除的异常 编辑:程序博客网 时间:2024/05/16 23:38
一般来讲广义霍夫变换是指把坐标空间的图像映射到参数空间,需要先确定转换到参数空间的函数关系式,这种转换是连续的,但是对于任意图形而言这种关系式往往很难确定,而且我们处理的图像本身就是离散的,不需要连续变换。对于有限长的曲线而言,只要确定对应每一个坐标对应的参数空间的映射表就能画出参数空间的离散曲线。之后根据累加值就可以识别任意曲线。代码实现如下:
clearvars;close all;target = imread('target.jpg');pic = imread('test.jpg');target = rgb2gray(target);pic = rgb2gray(pic);target = target<50;pic = pic<50;figure;imshow(target);figure;imshow(pic);[y,x] = find(target);cx = round(mean(x));cy = round(mean(y));x_map = cx-x;y_map = cy-y;[W,L] = size(pic);[ys,xs] = find(pic);h_space = zeros(W,L);for flag = [ys,xs]' ycs = y_map + flag(1); xcs = x_map + flag(2); r_ind = ycs>0&ycs<=W&xcs>0&xcs<=L; h_space = h_space + accumarray([ycs(r_ind),xcs(r_ind)],1,[W,L]);endfigure;imshow(h_space,[]);[yt,xt] = find(h_space == max(h_space(:)));pic_thunder = zeros(W,L);for ii = 1:length(yt) pic_thunder = pic_thunder + accumarray([yt(ii)-y_map,xt(ii)-x_map],1,[W,L]);endpic_thunder = double(cat(3,ones(W,L),~pic_thunder,~pic));figure;imshow(pic_thunder);目标图像:
测试图像:
参数空间:
结果:
这个结果虽然跟卷积实现模板匹配是一样的,但是计算时只计算了线条部分,计算量应该是比卷积实现模板匹配要少一些的,只不过我的代码多次使用accumarray导致速率比较慢,而且MATLAB应该对卷积进行了优化,所以实际上比用MATLAB的卷积要慢上很多。因此没有什么实际应用价值,不过对于帮助理解霍夫变换应该有一些帮助。每次accumarray得到的图像就是该像素点对应的所有可能的中心点的坐标,把所有像素点可能的中心点坐标加起来,累加值最高的就是目标图像的中心点坐标了。
阅读全文
0 0
- 离散空间广义霍夫变换。
- 广义霍夫变换GHT
- 广义霍夫变换目标匹配
- 霍夫变换到广义霍夫变换
- 霍夫变换与广义霍夫变换
- 霍夫变换到广义霍夫变换
- Hough变换检测直线到广义霍夫变换
- 基于广义霍夫变换的定位检测(一)
- 以一般化视角串联霍夫变换(hough transform),从直线到圆再到广义霍夫变换
- 以一般化视角串联霍夫变换,从直线到圆再到广义霍夫变换
- 【目标检测】目标检测原理与实现(二)--基于霍夫变换和广义霍夫变换的目标检测
- Matlab图像处理学习笔记(八):用广义霍夫变换筛选sift特征点
- 广义距离变换
- 离散余弦变换 DCT
- 离散余弦变换
- 理解离散傅立叶变换
- 离散傅立叶变换(DFT)
- 离散余弦变换
- : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- assert.h头文件之断言
- Android中TextView调用setText无效不显示问题
- 工作统一4a登入注意事项
- springmvc获取不到js传入的参数失败的菜鸟心得
- 离散空间广义霍夫变换。
- Zookeeper 集群安装
- 自己的HADOOP平台(一):HADOOP HA搭建
- SPOJ COT Count on a tree
- VMware虚拟磁盘VMDK格式说明书4.Simple Extents
- 数据库学习
- LINUX常用简单命令
- 微信小程序具有在线支付功能
- 进程之间的通讯之管道