关于matlab图像处理提取特定区域的问题

我把一幅图像转换到ycbcr颜色空间,颜色分割后,想把符合130<=(cb+cr)<=140, 10<=(cr-cb)的部分提取出来,用白色表示,其余部分用黑色表示。 matlab程序应该怎么写??使用二值化设定阈值吗?还是其他什么方法?要具体点的算法程序

I = zeros(size(cb));
I(cb+cr>=130&cb+cr<=140&cr-cb>=10) = 1;
figure; imshow(I);追问

不行呀,全黑的
为了实现肤色提取

提问写错了,130~140之间的是(cb+cr)/2 是应该写作 (cb+cr).\2 吗?

追答

那应该是没有符合判断条件。 判断肤色为什么要用ycrcb,用hsv的hue自己就可以了啊。

追问

啊~因为我看到一篇期刊写的可以用这个范围实现肤色提取。
那hsv的怎么提取呀??如果方便的话给我编一下呗…实在不行我明天再去查书好了…

追答

[h,s,v] = rgb2hsv(img);
然后你看一下肤色的h,可以算一下均值。或者取截取一块皮肤做个概率分布,形状会类似高斯。然后你根据这个分布来设定一段范围(hmin,hmax)。提取就好了。
binary = zeros(size(h));
binary(hhmin) = 1;

温馨提示:答案为网友推荐,仅供参考
相似回答