首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

在灰度图边缘提取上遇到的有关问题

2013-03-26 
在灰度图边缘提取上遇到的问题如下图所示,本人希望找出图中每条色带的宽度,请问各位高手该如何处理呢?[解

在灰度图边缘提取上遇到的问题
如下图所示,本人希望找出图中每条色带的宽度,请问各位高手该如何处理呢?

在灰度图边缘提取上遇到的有关问题
[解决办法]
多阀值二值化,然后去噪,判断连通域求boudingbox,得到宽度
[解决办法]
1.返回X方向上的边界。
2.通过累加的方式,做成1D数组 Fa(),方法是将所有X坐标为 A 的值累加到 Fa(A)点。
在这个数组中找到几个峰,就是你要的宽度了。
[解决办法]
先返回图像在X方向上的边界,方法是 fB(x,y) = 
[解决办法]
fA(x,y)-fA(x+1,y)
[解决办法]
,然后再试这个算法
[解决办法]
把你的原图像取反,然后算 X 方向上每列的均值,画图如下
[img=http://my.csdn.net/my/album/detail/1222986][/img]

红线是程序画的,蓝线是手工画的,7条蓝线之间应该是 6个色带。
通过计算红线的局部极值点可以算出蓝线的位置。


[解决办法]
在灰度图边缘提取上遇到的有关问题
[解决办法]
一般这种找线条的,还是得靠投影,如blueblood7所说。当阈值很难确定,像LZ这样的情况,可以用投影配合
图像CANNY边缘算法;

>> im = imread('C:\Users\Administrator\Desktop\1342252368_9320.png');
>> img = rgb2gray(im);
>> hist = sum(img,1);
>> hist = uint8(hist./600);
>> hist_ad = conv2(hist,ones(1,7)/7,'same');
>> for i=1:800
>> img(:,i) = uint8(hist_ad(i));
>> end
>> ime = edge(img,'canny');
>> imwrite('C:\2.jpg');

[img=http://my.csdn.net/my/album/detail/1229921][/img]
[解决办法]
在灰度图边缘提取上遇到的有关问题
[解决办法]
灰度线性变换

热点排行