这个命令是如何工作的”meanGL =意味着(blackMaskedImage (binaryImage));“。我的输入图像HSV形象。如何计算的意思。

23日视图(30天)
我有图像HSV。从这一形象一些区域被蒙住了。这一领域的平均亮度应该是计算。
我需要知道这个命令是如何工作的”meanGL =意味着(blackMaskedImage (binaryImage));“。我的输入图像HSV形象。如何计算的意思。HSV有三个不同的每个像素值。然后说这是像素值之和除以总像素。将不会工作。

答案(2)

图像分析
图像分析 约13小时前
让我们一步一个脚印。看看这有助于解释它
grayScaleImage =魔法(6)
grayScaleImage = 6×6
35 1 6 26日19日24 3 32 7 21 23 25 31日9 2 22日27日20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29日13 18 11
binaryImage = grayScaleImage > 30
binaryImage =6×6逻辑数组
1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
pixelsInMask = grayScaleImage (binaryImage)
pixelsInMask = 6×1
35 31 32 36 33 34
%得到像素的均值的面具
meanWithinMask =意味着(pixelsInMask)
meanWithinMask = 33.5000
你不能做一个三路HSV的形象。你只能做一个频道
5个评论
为副总经理
为副总经理 24分钟前
我不知道为什么你想转换到HSV。你假设的外观形象意味着它是一个HSV形象吗?
这是一个伪彩色图像。从表面上看,这是RGB,但它代表了一个2 d地图的价值观——灰度图像。
问题只是,地图是未知的,比例和单位是未知的。我们可以回答这个问题“我如何找到一个RGB图像的平均亮度”,但如果这是一个伪彩色图像代表一些数量像温度,然后没有足够的信息来回答这个问题“我如何找到平均温度(例如。)”。
这可能有助于了解这张图片意味着什么或如何被创建。

登录置评。


为副总经理
为副总经理 大约8小时前
编辑:为副总经理 约4小时前
这意味着可能不是一个很好的起点。让我们后退一步想想,因为我们可能不会做我们想做的事情。考虑以下屏蔽多通道图像的例子:
%做作MxNx3形象
%清晰的通道的值在不同的范围
inpict =魔法(5)+交换([0 100 200],[1 3 2])
inpict =
inpict(:: 1) = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19日21日3 11 18 25 2 9 inpict (:,: 2) = 117 124 101 108 115 123 105 107 114 116 104 106 113 120 122 110 112 119 121 103 111 118 125 102 109 inpict (:,:, 3) = 217 224 201 208 215 223 205 207 214 216 204 206 213 220 222 210 212 219 221 203 211 218 225 202 209
% MxNx1逻辑面具
掩码=逻辑(眼(5))
掩码=5×5逻辑数组
1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1
%选择一些像素点的平均水平
%如果我们天真的一个单通道的面具应用于多通道图像
%,我们只选择第一个频道,什么都没有
selectedpix = inpict(面具)
selectedpix = 5×1
17日5 13 21 9
%如果我们扩大面具匹配图像的深度,我们得到了更多
%但是结果从所有通道是在一列,并将得到平均在一起
numchans =大小(inpict, 3);
selectedpix = inpict (repmat(面具,[1 1 numchans]))
selectedpix = 15×1
17 5 13 21 9 117 105 113 121 109
%因此重塑输出
selectedpix =重塑(selectedpix [], 3)
selectedpix = 5×3
17 117 217 5 105 205 13 113 213 21 121 221 9 109 209
%现在你可以得到平均的元组
avgcolor =意味着(selectedpix, 1)
avgcolor = 1×3
13 113 213
所以图像的深度和面具确定实际上是被选择和平均。你有多通道图像,无论HSV或RGB。很可能你的面具不是多通道,所以你没有选择你认为你选择。
它的大意,但现在回到细节。你的图像HSV。什么我给工作时寻找算术平均页面的任意三维数组,采取的算术平均值 HSV 图像没有意义,因为它没有意义的算术平均角度。
例如,假设我们有这个形象和掩码:
rgbpict = imread (“peppers.png”);
掩码= imread (“redpepmask.png”)> 128;
%得到选择的像素的面具
numchans =大小(rgbpict, 3);
selectedpix = rgbpict (repmat(面具,[1 1 numchans]));
selectedpix =重塑(selectedpix [], 3);
%现在你可以得到平均的元组
avgRGB =投(意思是(selectedpix, 1),类(rgbpict))
avgRGB = 1×3
184 34 39
%显示它
imshow(排列(avgRGB [1 3 2]),“边界”,“紧”)
% HSV副本做同样的事情
hsvpict = rgb2hsv (rgbpict);
%得到选择的像素的面具
numchans =大小(hsvpict, 3);
selectedpix = hsvpict (repmat(面具,[1 1 numchans]));
selectedpix =重塑(selectedpix [], 3);
%现在你可以得到平均的元组
avgHSV =投(意思是(selectedpix, 1),类(hsvpict))
avgHSV = 1×3
0.7044 0.8454 0.7212
avgRGB = im2uint8 (hsv2rgb (avgHSV))%转换为显示uint8-scale RGB
avgRGB = 1×3
64年28 184年
%显示它
imshow(排列(avgRGB [1 3 2]),“边界”,“紧”)
所以我们得到的平均颜色HSV的算术平均数是非常不正确的。这是为什么呢?对于一个解释,看到这个答案:
2的评论
为副总经理
为副总经理 1分钟前
V是HSV模型中的“亮度”组件,但据 可见光 图像而言,V是感知亮度的最糟糕的措施之一,您可以使用。
注意强调可见光。如果这是一个热图像,然后应用colormap的亮度是完全一个工件,不告诉你任何关于底层数据。就像我说的其他评论,它将有助于知道图像是什么意思或者有其他信息来源。
也就是说,如果你想找到给定地区的平均V,您可以简单地独自工作通道。
% MxNx3形象一样
%假装这是我们HSV的形象
hsv =魔法(5)+交换([0 100 200],[1 3 2]);
%只能得到通道的值
V = hsv (:: 3);
%将面具应用于V孤独和得到的平均
meanV =意味着(V(面具))

登录置评。

社区寻宝

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

开始狩猎!