我是matlab的新手
现在我正在研究视盘定位
这里我的第一步是创建两个特征映射 其次我必须创建一个矩形并在第一个特征图中从左向右移动矩形,宽度为30,矩形的高度为图像高度
在第二个特征地图中,我将矩形从上到下移动
第三步是在矩形的每个位置我必须计算总和并绘制总和值并获得两个图
现在我使用了nlfilter,其宽度和尺寸与矩形相同,但是我无法得到答案,请帮助我,这是我的代码
final2=edgediff./eror;
figure,image((final2));
title('Feature MAP 1');
func = @(x) sum(x(:));
B = nlfilter(final2,[30 600],func);
答案 0 :(得分:1)
如果您正在研究视盘定位,我认为您所做的实际上是在水平和垂直方向上分别进行两次旋转。事实上,您使用线性函数sum
表明您不需要非线性过滤函数nlfilter
。请考虑使用conv2
代替ones(ncols, nrows)
。
这样的事情:
[width, height] = size(featureMap1);
box = ones(30, height);
smoothFeatureMap1 = conv2(featureMap1, box, 'same');
重复但box = ones(width, 30)
获取smoothFeatureMap2
。
然后你可以将两张平滑的特征图一起添加。
但是说实话,我想也许你想要的只是单个2D卷积的结果,而不是其他两个卷积的总和。这个问题很难说清楚。特别是我不知道你想要在两张图中绘制图形。 (如果你让问题更清楚,我会尝试更新这个答案。)
答案 1 :(得分:0)
您可以使用图像处理工具箱中的imrect放置一个矩形并获取其坐标:
H = imrect(axes, position);