如何从图像和识别位置中删除特定颜色?

时间:2016-05-25 12:56:39

标签: matlab image-processing

我的图像为.png,我想用给定的图像执行以下任务:

1 - 从图像中删除不必要的白色阴影。

2 - 识别图像中大黑点的位置/坐标。

对于Task 1我的尝试是:

img = imread('1.png');
imshow(img);
I = img;
[r c] = size(I);
for i=1:r
    for j=1:c
        if I(i,j) > 230 %here i am changing 240 to different values to get result 
            %but this is just some hack
            I(i,j) = 0;
        end
    end
end
imshow(I);

原始图片在哪里:

duck_unprocess

Matlab的结果是:

duck_process 而对于(2)我的想法是什么,我怎么能做到这一点任何帮助赞赏。

注意:我是图像处理的新手,所以请以简单的方式向我解释,以便我能理解。感谢

1 个答案:

答案 0 :(得分:0)

对于任务1,我不完全确定你的意思是什么,从代码中移除",我想你想将像素值设置为0。 一种更简单,更快捷的方法是:

img = imread('1.png');
img(img>230)=0;

此代码将img的所有高于230的值设置为零。 img> 230创建一个大小为img的逻辑数组,对于高于230的元素为true,对于其他元素为false。 然后使用此逻辑数组将这些像素设置为0.(但您可以使用它们执行任何操作)

Matlab设计用于对矢量和矩阵进行操作,循环遍历元素通常要慢得多。

对于任务2,可以查看:http://nl.mathworks.com/help/images/examples/detect-and-measure-circular-objects-in-an-image.html