Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:41   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在Matlab中掩盖部分图像?

我想知道如何遮盖黑白色图像的一部分?

我有一个需要边缘检测的对象,但是背景中的目标对象下方有其他白色干扰对象……我想将图像的整个下部遮盖成黑色,我该怎么做?

谢谢 !!

编辑

我还想遮盖其他部分(顶部)...我该怎么做?

请解释一下代码,因为我很想了解它的工作原理并以自己的理解实施。

编辑2

我的图片是480x640。有没有办法掩盖特定像素?例如图片中的180x440 ...



回答:

如果矩阵A存储了二维灰度强度图像 ,则可以通过执行以下操作将下半部分设置为黑色:

centerIndex = round(size(A,1)/2); %# Get the center index for the rows A(centerIndex:end,:) = cast(0,class(A)); %# Set the lower half to the value %# 0 (of the same type as A) 首先使用函数SIZE获取A的行数,然后将其除以2,然后四舍五入以获得靠近图像高度中心的整数索引。然后,向量centerIndex:end索引从中心索引到centerIndex:end所有行,而:索引所有列。所有这些索引元素均设置为0以表示黑色。

函数CLASS用于获取A的数据类型,以便可以使用函数CAST将0强制转换为该类型。不过,这可能不是必需的,因为没有它们,0可能会自动转换为A的类型。

如果要创建用作屏蔽的逻辑索引 ,可以执行以下操作:

mask = true(size(A)); %# Create a matrix of true values the same size as A centerIndex = round(size(A,1)/2); %# Get the center index for the rows mask(centerIndex:end,:) = false; %# Set the lower half to false 现在, mask是一个逻辑矩阵,对于要保留的像素,其true (即“ 1”),对于要设置为0的像素,其false (即“ 0”)。您可以根据需要将更多mask元素设置为false 。然后,当您要应用遮罩时,可以执行以下操作:

A(~mask) = 0; %# Set all elements in A corresponding %# to false values in mask to 0

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:13


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.