% 读取图像并转化为二值图像
I = imread('Fig0941.tif');
% 设置阈值
threshold = graythresh(I);
% 转化为二值图像
bw = imbinarize(I,threshold);
% 中值滤波
bw = medfilt2(bw, [3 3]);
% 腐蚀
for k = 1:3
se = strel('disk',3);
bw = imerode(bw, se);
end
2. 连通域的标记和操作
bwlabel会返回两个参数,第一个参数l是矩阵,会将同一个连通域下的点设为同一个值;第二个参数num是连通域个数。
regionprops会返回很多信息,可以在传入参数的时候选择是‘Area’还是‘Centroid’,Area是返回一个48x1的面积矩阵,Centroid返回的是中心坐标。
% 连通域标记
[l, num] = bwlabel(bw, 8)
% 获取面积,坐标
area = regionprops(l,'Area');
centroid = regionprops(l,'Centroid');
figure(1)
imshow(bw);
figure(2)
imshow(I);
3. 给原图添加文字
要注意是area(i).Area(1)。
阈值设为1000,大于它的就标记为big,小于它的标记为small。
big_n