刚开始接触MATLAB图像处理,老师布置的任务-编写一个算法实现类似于bwlabel的功能
大致思路为将灰度图rice.png通过imbinarize函数转换为二进制图像,然后将米粒部分转换为白色像素255
创建一个数组临时充当队列,从矩阵(1,1)元素开始遍历矩阵,当碰到白色像素点时,将该像素点入队列,然后编号,
大致思路为将灰度图rice.png通过imbinarize函数转换为二进制图像,然后将米粒部分转换为白色像素255
创建一个数组临时充当队列,从矩阵(1,1)元素开始遍历矩阵,当碰到白色像素点时,将该像素点入队列,然后编号,
判断队列是否为空,不为空时,取出队首元素,判断该元素8个临近区域,如果也为白色像素点,则将该元素的值转换为米粒编号,并将该元素入队列
% clear;
% close all;
a=input('Enter the picture address:','s');%例如rice.png
b=input('Enter 4 or 8:'); %4连通,8连通
c=input('Is a RGB image:','s'); %y,n
I = imread(a);
connect_type=b;
if(c=='y')
I=rgb2gray(I);
end
% I = imread('rice.png');
[height,width] = size(I);
L=imbinarize(I);
[labeled_4,numObjects_4]=bwlabel(L,4);
[labeled_8,numObjects_8]=bwlabel(L,8); %调用bwlabel查看正确结果
figure,imshow(L);
L = uint8(L);%把L由logic类型转化为uint8类型
for i = 1:heigh