繁体   English   中英

如何在matlab中的图像上移动矩形

[英]how to move a rectangle over a image in matlab

我是Matlab的新手

现在我正在研究光盘定位

在这里,我的第一步是创建两个特征图,然后我必须创建一个矩形并将矩形在第一张特征图中从左向右移动,宽度为30,矩形的高度为图像高度

在第二个特征图中,我将矩形从上到下移动

第三步是在矩形的每个位置,我必须计算总和并绘制总和值并获得两个图

现在我已经使用了nlfilter,其宽度和尺寸与矩形的宽度和尺寸相同,但是我无法获得答案,请帮助我,这是我的代码


final2=edgediff./eror;
figure,image((final2));
title('Feature MAP 1');
func = @(x) sum(x(:));
B = nlfilter(final2,[30 600],func);

如果您正在研究光盘的定位,我想您实际上是在水平和垂直方向分别进行了两次卷积。 实际上,使用线性函数sum的事实表明您不需要非线性滤波器函数nlfilter 考虑将conv2ones(ncols, nrows)使用。

像这样:

[width, height] = size(featureMap1);
box = ones(30, height);
smoothFeatureMap1 = conv2(featureMap1, box, 'same');

重复上述步骤,但使用box = ones(width, 30) smoothFeatureMap2 box = ones(width, 30)来获取smoothFeatureMap2

然后,您可以将两个平滑特征图加在一起。

但是说实话,我认为也许您想要的只是一个2D卷积的结果,而不是其他两个卷积的结果。 从这个问题很难确定。 特别是我不知道要在两个图中绘制什么。 (如果您使问题更清楚,我将尝试更新此答案)。

您可以从图像处理工具箱使用imrect放置矩形并获取其坐标:

H = imrect(axes, position);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM