使用二进制面具掩盖了图像区域

1.039视图(30天)
Dimitris米
Dimitris米 2012年5月16日
评论道: 丽莎Grooten2022年3月25日
你好
我有一个图片,我也有一个相同大小的二元掩模(ROI 1、背景0)。我怎么能和显示的ROI只创建一个新的形象吗?
有什么区别,如果图像灰度飞机或RGB吗?
谢谢你!

接受的答案

Kye泰勒
Kye泰勒 2012年5月16日
让我成为M×n的形象,让M M×n的面具。
Inew新形象,将M×n的,到处都0 0 M,将灰度值M有1。
Inew = i * M;
如果图像是RGB(例如我是m-by-n-by-3),然后使用命令
Inew = i * repmat (M, (1, 1, 3));
2的评论
图像分析
图像分析 2016年7月23日
或者更现代的方式我们一直推动:
%替代乘法通道,通道的方法。
%掩模图像使用bsxfun()函数
maskedRgbImage = bsxfun (@times rgbImage铸造(面具,“喜欢”rgbImage));
当你使用现在,扰你使用“喜欢”关键字,而不是调用类()函数。

登录置评。

更多的答案(3)

图像分析
图像分析 2012年5月16日
编辑:图像分析 2022年3月22日
看到我的演示——这三种不同的屏蔽:
%演示用户徒手画一个不规则的形状
%一个灰度图像,它只提取这部分新形象,
%和计算强度的平均值中图像的形状。
%
%改变当前文件夹的文件夹m文件。
如果(~ isdeployed)
cd (fileparts ((mfilename)));
结束
clc;%明确命令窗口。
清晰;%删除所有变量。
关闭所有;%关闭所有除由imtool图窗口。
imtool关闭所有;%由imtool关闭所有图窗口。
工作空间;%确定工作区面板显示。
字形大小= 16;
%读标准MATLAB灰度图像演示。
grayImage = imread (“cameraman.tif”);
次要情节(2、3、1);
imshow (grayImage []);
标题(的原始灰度图像,“字形大小”、字形大小);
集(gcf,“位置”get (0,“拉”));%最大化图。
消息= sprintf (“左点击并按住开始绘画。\ nSimply抬起鼠标按钮来完成的);
uiwait(对话框(消息));
仁人家园= imfreehand分部();
%创建一个二进制图像(“面具”)从ROI对象。
binaryImage = hFH.createMask ();
%显示徒手画的面具。
次要情节(2、3、2);
imshow (binaryImage);
标题(“该地区的二元掩模”,“字形大小”、字形大小);
%计算区域,以像素为单位,他们吸引了。
numberOfPixels1 =总和(binaryImage (:))
%的另一种方法计算,考虑了分数像素。
numberOfPixels2 = bwarea (binaryImage)
%得到徒手画的边界地区的坐标。
structBoundaries = bwboundaries (binaryImage);
xy = structBoundaries {1};% n除以2的x, y坐标。
x = xy (:, 2);%列。
y = xy (: 1);%的行。
次要情节(2、3、1);在原始图像%的阴谋。
持有;%不吹走。
情节(x, y,“线宽”2);
drawnow;%迫使它立即画。
%烧到图像通过设置它255年无论面具是正确的。
burnedImage = grayImage;
burnedImage (binaryImage) = 255;
%显示图像的面具”了。”
次要情节(2、3、3);
imshow (burnedImage);
标题= sprintf (“新形象\ nmask烧成形象”);
标题(标题,“字形大小”、字形大小);
%掩模图像并显示它。
%将只保留图像的一部分,在面具,零以外的面具。
blackMaskedImage = grayImage;
blackMaskedImage (~ binaryImage) = 0;
次要情节(2、3、4);
imshow (blackMaskedImage);
标题(“蒙面以外地区”,“字形大小”、字形大小);
%计算均值
meanGL =意味着(blackMaskedImage (binaryImage));
%的报告结果。
消息= sprintf (在绘制区域内的平均值= %。3 f \ nNumber像素= % = % .2f ' d \ nArea像素,
meanGL、numberOfPixels1 numberOfPixels2);
对话框(消息);
%做同样的但在区域变黑。
insideMasked = grayImage;
insideMasked (binaryImage) = 0;
次要情节(2、3、5);
imshow (insideMasked);
标题(掩盖了地区内的,“字形大小”、字形大小);
%现在作物图像。
背线= min (x);
底线= max (x);
leftColumn = min (y);
rightColumn = max (y);
宽度=底线-背线+ 1;
身高= rightColumn - leftColumn + 1;
croppedImage = imcrop (blackMaskedImage [leftColumn,背线宽度、高度]);
%显示裁剪图像。
次要情节(2、3、6);
imshow (croppedImage);
标题(“裁剪图像”,“字形大小”、字形大小);
22日评论

登录置评。


Dimitris米
Dimitris米 2012年5月17日
谢谢你对好码!

巴勃罗·迪亚斯
巴勃罗·迪亚斯 2018年8月29日
考虑到RGB图片:
我(repmat (M, (1, 1, 3)) ~ = 0) = 0;
1评论
约翰·罗杰斯
约翰·罗杰斯 2021年4月10日
由于巴勃罗。这工作完全当我改变了~ = = =。约翰
我(repmat (M, (1, 1, 3)) = = 0) = 0;

登录置评。

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的