Algorithm 生成对象的直方图,同时忽略背景

Algorithm 生成对象的直方图,同时忽略背景,algorithm,matlab,image-processing,opencv,octave,Algorithm,Matlab,Image Processing,Opencv,Octave,图像直方图的计算是一项简单的任务,大多数可用的语言或库都为此提供了函数。但是,如果我想从直方图的计算中排除图像背景(例如假设有一个遮罩来裁剪图像中包含的对象),是否有函数允许您仅考虑遮罩定义的图像部分来计算直方图 更新。遮罩没有特定形状,因为它是通过减去背景获得的:换句话说,遮罩的黑色像素标识背景,而白色像素标识对象。有 hist(im(mask)) 或者取决于定义遮罩的方向 hist(im(~mask)) 工作?遮罩没有特定的形状,因为它是通过减去背景获得的:换句话说,遮罩的黑色像素识别背

图像直方图的计算是一项简单的任务,大多数可用的语言或库都为此提供了函数。但是,如果我想从直方图的计算中排除图像背景(例如假设有一个遮罩来裁剪图像中包含的对象),是否有函数允许您仅考虑遮罩定义的图像部分来计算直方图


更新。遮罩没有特定形状,因为它是通过减去背景获得的:换句话说,遮罩的黑色像素标识背景,而白色像素标识对象。

hist(im(mask))
或者取决于定义遮罩的方向

hist(im(~mask))

工作?

遮罩没有特定的形状,因为它是通过减去背景获得的:换句话说,遮罩的黑色像素识别背景,而白色像素识别对象。因此,命令
im(mask)
将不起作用。如果mask在前两个维度上的形状与图像相同,则它应该起作用。你的面具没有那种属性吗?你说得对。我运行了命令
im(mask)
,它返回一个向量:这个向量的长度等于图像的行数和列数的乘积。但是,我有一个彩色图像,所以我应该创建一个m-by-n-by-3矩阵,在每个通道上包含
mask
?它没有特定形状是什么意思?它应该与图像大小相同,背景像素的值为true。你能举个例子吗(阅读,给我们看代码)。@Carandraugh你说它没有特殊形状是什么意思?对不起,我用形容词“special”可能有错误:面具没有特定的形状(它不是正方形面具,也不是长方形面具等等);例如,如果我有一张包含一杯咖啡的图像,我只会计算咖啡杯的直方图并排除背景像素,然后告诉我你是如何识别它的。因为问题的答案取决于您如何识别背景。该代码返回的逻辑矩阵与输入图像的大小完全相同。你可以用它来做这个。执行
image(mask)
将返回
image
的像素值,其中
mask
为真。也就是说,@E先生的回答是正确的。但是,由于您正在进行图像处理,请不要使用
hist
,而是使用
imhist
。您需要映像包(获得版本2.0.0,它修复了映像包上的一个大错误)。