如何从图像中裁剪一个蒙面区域(多边形形状)?

78次浏览(过去30天)
你好,
现在我的代码如下所示:
I = imread(“moon.tif”);
图;
imshow(我)
Poly_Mask = images.roi.Polygon(gca,“位置”, (100 150;200 250;300 350;150 450]);
如您所见,示例图像现在用多边形形状进行了遮罩。我想从图像中裁剪蒙版区域(多边形形状)。你能建议我怎么做吗?谢谢你!

接受的答案

图像分析
图像分析 2022年3月30日
试试这个:
grayImage = imread(“moon.tif”);
[rows, columns, numberOfColorChannels] = size(grayImage)
行数= 537
列= 358
numberOfColorChannels = 1
Subplot (2,1,1);
imshow (grayImage []);
轴(“上”“图像”);
标题(原始图像的
X = [100, 200, 300, 150];
Y = [150, 250, 350, 450];
把故事的起点固定好,这样剧情就不会被揭开了。(只有
如果你想在覆盖层中绘制轮廓,则需要%。
X = [X, X (1)];
Y = [Y, Y (1)];
持有
情节(x, y,的r -“线宽”2);
掩码= poly2mask(x, y,行,列);
将外部蒙版设置为零来擦除
grayImage(~mask) = 0;
%的作物
cropedimage = grayImage(min(y):max(y), min(x):max(x));
Subplot (2,1,2);
imshow (croppedImage)
轴(“上”“图像”);
标题(“裁剪图像”
2的评论
图像分析
图像分析 2022年3月30日
你不能让它透明,而且我能想到的任何原因都不需要透明,当然不是因为normxcorr2()。
你可以通过将形状边界的坐标放入poly2mask()中来获得任何你想要的形状。

登录评论。

更多答案(1)

塔拉
塔拉 2022年3月29日
编辑:塔拉 2022年3月29日
我看不到你的形象。但我用了我狗狗的照片(因为她不会起诉我:D)来展示这个概念:
我= rgb2gray (imread (“Tala1.jpg”));
X =[100 200 300 150];%您的ROI x值
Y =[150 250 350 450];%你的ROI值
[rows, columns,~] = size(I);
掩码= imcomplement(poly2mask(x, y,行,列));
mul = immultiply(I,mask);
imshow (mul)
3评论
Chutiphon Moranon
Chutiphon Moranon 2022年3月30日
谢谢你的回复。我将按照您的建议使用normxcorr2。然而,我想使用的输入图像不是矩形的形状。
我试图裁剪一个输入图像,只有部分区域,我想要更准确的相关性。因此,裁剪图像的背景区域将是透明的,如下图所示。我不确定这个方法是否会提供好的结果,但我会尝试一下。请随时提出你的建议。谢谢你!

登录评论。

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!