在matlab

时间:2016-02-17 14:21:50

标签: image matlab image-processing binary-image

我已将图像转换为二进制(黑白)。这是original imagebinary image

这是我写的代码

a=imread('image');
imshow(a);title('original image');
b=imresize(a,[200,250]);
figure,imshow(b);title('resized image');
c=im2bw(b);
figure,imshow(c); title(['Number of white pixels: ' int2str(nnz(c))]);
at=int2str(nnz(c));
disp(at)

我计算了白色像素以找到叶子的总面积。但由于叶子的折叠部分叶子区域覆盖着黑色像素。如何将整个叶面积改为白色?我该如何照顾叶子褶皱?我在matlab做一个图像处理项目,我将不得不对叶片进行分级。如果有人能给我代码来处理数字图像中的叶子折叠,那将会非常有用。我正在使用MATLAB 2009a。

1 个答案:

答案 0 :(得分:0)

第一种方法可能是使用rgb2gray()而不是im2bw(),如下所示:

c=rgb2gray(b);
figure,imshow(c);

其中b是您调整大小的图片(如代码中所示)。将显示以下图片: enter image description here

然后你可以计算非零像素的数量(矩阵c中的值)。回想一下,0表示黑色。

虽然您必须注意,即使在原始图片中,上边框和左边框也有灰色边距,在此灰度图片中为白色。此外,右下角的日期将被计为非零。为了获得更好和更准确的结果,我建议使用某种算法来检测叶子的边缘,如 Kass等。 "蛇,活动轮廓模型" 。这种算法描述为here