我如何提取图像的白色像素?

31日视图(30天)
我想要一些帮助来提取图像的白色部分。
例如,在这张照片,我想提取红retangular所示的区域。
我想要面积减去至少是20 * 20像素宽度和长度,就像上面的例子所示。这意味着任何白色的小领域,如一个白点,被忽略。
我可以得到一些帮助吗?
谢谢!

接受的答案

图像分析
图像分析 2017年3月8日
简单的阈值来创建一个二进制图像的“白色”在哪里。然后调用beareaopen()来删除blob小于一定规模。然后调用regionprops()来得到你想要的边界框blob中提取。然后调用imcrop()来停止并分别显示它。见下面的附加代码,这张图片它创建:
2的评论
图像分析
图像分析 2017年3月9日
选择任何你想要的。价值似乎给人一种白斑大小的你想要的。高阈值给小斑点。

登录置评。

更多的答案(2)

约翰Chilleri
约翰Chilleri 2017年3月8日
编辑:约翰Chilleri 2017年3月8日
你好,
假设你的图像的大小 x n x 3,范围255存储值,您可以使用以下简单的方法:
%认为img是m x n x 3形象
img =双(img);
[m, n, ~] =大小(img);
%第一步,约束到左下角,我们不想失去她的鞋子或左上角:
m1 =圆(2 *米/ 3);
n1 =圆(1 * n / 3);
submat = img (m1: m, 1: n1,:);%符合这一因此,我只是推测
%确定位置的白色像素使用阈值和变化:
i = 1:尺寸(submat, 1)
j = 1:尺寸(submat, 2)
如果(和(submat (i, j,:)) > 3 * 240)
%白色像素——做你想原始图像
img (m1-1 + i, j) = [0 0 0];例如,%更黑
结束
结束
结束
img = uint8 (img);
使用上面的代码在屏幕上的图像阈值的240年,我得到了这个:
注意:图像是切断因为我拍摄一个快速的屏幕截图,不是精心剪裁。
可能有更好的方法,但这是一个简单的方法。
希望这可以帮助!
3评论
约翰Chilleri
约翰Chilleri 2017年3月8日
为了提取面积,可以使submat = img,并设置等于黑色如果小于阈值,设置为白色。然后你有一个白色图像与黑色斑点,你可以选择(如果他们足够大)中提取。

登录置评。


chandu priya
chandu priya 2019年8月27日
img =双(img);
[m, n, ~] =大小(img);
%第一步,约束到左下角,我们不想失去她的鞋子或左上角:
m1 =圆(2 *米/ 3);
n1 =圆(1 * n / 3);
submat = img (m1: m, 1: n1,:); %符合这一因此,我只是推测
%确定位置的白色像素使用阈值和变化:
i = 1:尺寸(submat, 1)
j = 1:尺寸(submat, 2)
如果 (和(submat (i, j,:)) > 3 * 240)
%白色像素——做你想原始图像
img (m1-1 + i, j) = [0 0 0]; 例如,%更黑
结束
结束
结束
img = uint8 (img);

社区寻宝

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

开始狩猎!