gpt4 book ai didi

matlab - 如何在matlab中屏蔽图像的一部分?

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:39 36 4
gpt4 key购买 nike

我想知道如何屏蔽黑白图像的一部分?

我有一个需要进行边缘检测的对象,但我在目标对象下方的背景中有其他白色干扰对象......我想将图像的整个下部 mask 为黑色,如何才能我这样做?

谢谢!!

编辑

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

请解释一下代码,因为我真的很想了解它是如何工作的,并以我自己的理解来实现它。

EDIT2

我的图像是 480x640 ...有没有办法屏蔽特定像素?例如图像中的 180x440 ...

最佳答案

如果你有一个 2-D grayscale intensity image存储在矩阵 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 索引从中心索引到末尾的所有行,: 索引所有列。所有这些索引元素都设置为 0 以表示黑色。

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

如果你想创建一个logical index要用作面具,您可以执行以下操作:

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”)表示要保留的像素,false(即“0") 对于要设置为 0 的像素。您可以根据需要将 mask 的更多元素设置为 false。然后,当您想要敷面膜时,您可以执行以下操作:

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

关于matlab - 如何在matlab中屏蔽图像的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841882/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com