我已将图像转换为二进制(黑白)。这是original image和binary 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。
答案 0 :(得分:0)
第一种方法可能是使用rgb2gray()
而不是im2bw()
,如下所示:
c=rgb2gray(b);
figure,imshow(c);
然后你可以计算非零像素的数量(矩阵c
中的值)。回想一下,0
表示黑色。
虽然您必须注意,即使在原始图片中,上边框和左边框也有灰色边距,在此灰度图片中为白色。此外,右下角的日期将被计为非零。为了获得更好和更准确的结果,我建议使用某种算法来检测叶子的边缘,如 Kass等。 "蛇,活动轮廓模型" 。这种算法描述为here。