MATLAB与数学建模:影像处理(下)

以下内容为个人笔记,部分图片来源于郭老师课件或课程截图。
笔记汇总:MATLAB基础教程
课程视频:MATLAB基础教程-台大郭彦甫(14课全-高清-含课件)



为了解决下列问题展开:
image-20210131215140272

图像黑白化

对灰阶图像黑白化,即把图像颜色较深的那部分值设为全黑(0),较浅那一部分设为全白(1);
量化来说,就是对于图像的 histogram 图,选取一个合适的值(分界线),将小于这个值的点设置为0,大于的设置为1:
image-20210131222851388

图像背景

可以看出,简单的黑白化,会由于图像的整体亮度不均,导致效果不理想;
可以通过去除背景后再黑白化来优化。

图像计数

I=imread('rice.png');
BG=imopen(I, strel('disk', 15));
I2=imsubtract(I, BG); level=graythresh(I2);
BW=im2bw(I2, level);
% 计数
[labeled, numObjects]=bwlabel(BW, 8); 
% 上色
RGB_label=label2rgb(labeled); figure; imshow(RGB_label); 
% 给出连通分量的属性
graindata = regionprops(labeled, 'basic'); 
graindata(51) % 查看第51个连通分量的各属性
% 选择连通分量
ObjI = bwselect(BW); figure; imshow(ObjI);

练习

image-20210131234447367

I = imread('rice.png');
imhist(I);
BW = I > 130; % 通过观察图像的histogram选择适当阈值
subplot(121); imshow(BW);
BW2 = I > graythresh(I)*255; % 通过函数计算合适的阈值
subplot(122); imshow(BW2);

实际上,灰阶图转化为黑白图,只需要 I > x 一条语句即可实现,大于阈值 x 的点将置为1,小于的将置为0;关键在于阈值的确定,可以通过观察图像的 histogram 图选择合适的,也可以通过函数计算

image-20210131235244713

I=imread('rice.png');
BG=imopen(I, strel('disk', 15));
I2=imsubtract(I, BG); level=graythresh(I2);
BW=im2bw(I2, level);
[labeled, numObjects]=bwlabel(BW, 8);

%% 直方图
num_of_lab = zeros(1,numObjects); %预为哈希表先分配空间
for i=1:size(labeled, 1)
    for j=1:size(labeled, 2)
        index = labeled(i,j);
        if index ~= 0 %如果该点不为0,即被标记了,对应该标记的米粒大小加一
           num_of_lab(index)=num_of_lab(index)+1; %思想类似哈希表
        end
    end
end
histogram(num_of_lab)

%% 上色
r = BW * 255; %把白色部分的red分量置为全红
g = zeros(size(BW)); %green分量和blue分量为全0
b = zeros(size(BW));
red_rice = cat(3,r,g,b); %将RGB三个分量拼接为一个三维的彩图矩阵
figure; imshow(red_rice)

从连通块大小(连通块中像素点个数)的 histogram 中可以看出,连通块大小集中在150到250作用,说明米粒基本上就是这个大小(每个米粒大小差不多);
但居然还存在小于100这样的连通块,这可能是一些噪点或者边界的不完整米粒,可以考虑去除这部分连通块数;
还有大于350的连通块,这可能是两颗米粒相邻比较近,被标记为一个连通块,可以考虑将这部分连通块数乘以2;

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值