我在 MATLAB 中有一个 RGB 图像,我想循环遍历每个像素并检查它是否是肤色(ish)[稍后我可能会在 HSV 空间中执行此操作,以消除光照等的影响]
有人知道最好的方法吗? MATLAB 奇怪的语法让我有点困惑!
目前我有:
for x = 1:size(I,1)
for y = 1:size(I,2)
%Get the value from this x,y coordinate and check the colour.
end
end
但我认为这是非常错误的。
如何正确访问矩阵的不同部分?
最佳答案
编者,
您不需要循环:
>> a = magic(5)
a =
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
>> vi = (a > 5) & (a < 10)
vi =
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 0 1
您可以看到如何将此语句扩展到 RGB 等。我会做一个函数
<小时/>函数输出 = isFlesh(in)
%%在这里放置肉身检查代码
<小时/>我怀疑你会想要一系列的这些(isCaucasian,isAsian,等等...)问题是肤色的范围很大,所以你会想要检查邻近度到具有相似颜色范围的邻居。
这部分问题很简单,但更大的问题充满了危险。
-道格
关于matlab - 检查每个像素的特定颜色(在特定阈值内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650472/