MATLAB图像处理工具箱函数(细化篇)
第3章 MATLAB数字图像处理工具箱
3.1 MATLAB图像预处理
3.1.1 图像处理的基本操作
1. 读入并显示一幅图像
clear %清除所有的工作平台变量
close all %关闭已打开的图形窗口
I=imread ('pout.tif'); %读取图像pout.tif(该图像是图像处理工具箱自带的图像),
%存储在一个名为I的数组中
imshow(I) %显示图像I
2. 检查内存中的图像
whos %查看图像数据I是如何存储在内存中的。
3. 实现直方图均衡化
figure %生成一个新的图形窗口,避免后面的图像覆盖前面图像的显示
imhist(I) %创建描述图像I灰度分布的直方图
I2=histeq(I); %将图像的灰度值扩展到整个灰度范围,从而提高图像数组I的对比度。
figure,imshow(I2) %显示修改过的图像I2
figure,imhist(I2) %显示拓展后的灰度值的分布情况
4. 保存图像
imwrite(I2,'pout.png'); %将图像I2以PNG图像文件格式保存到磁盘
5. 检查新生成文件的内容
imfinfo('pout2.png') %观察保存的图像文件信息
3.1.2 图像处理的高级应用
主要对一幅灰度图像rice.tif进行一些较为高级的操作为例说明整个过程。
1. 读取和显示图像
clear %清除所有的工作平台变量
close all %关闭已打开的图形窗口
I=imread('rice.png'); %读取图像rice.png (该图像是图像处理工具箱自带的图像)
imshow(I) %显示图像
2. 估计图像背景
background=imopen(I,strel('disk',15)); %对图像I进行形态学开操作,删除那些不完全包括
%在半径为15的圆盘中的对象,实现对背景亮度的估计
figure,imshow(background)
figure,surf(double(background(1:8:end,1:8:end))),zlim([0 255]); %以表面形式显示背景
3. 从原始图像中减去背景图像
I2=imsubtract(I,background); %将背景图像background从原始图像I中减去
figure,imshow(I2)
4. 调节图像对比度
I3=imadjust(I2,stretchlim(I2),[0 1]); %调节图像的对比度
figure,imshow(I3);
5. 使用阈值操作将图像转换为二进制图像
level=graythresh(I3);
bw=im2bw(I3,level);
figure,imshow(bw)
6. 检查图像中的对象个数
[labeled,numObjects]=bwlabel(bw,4); %确定图像中的米粒个数
numObjects
101
7. 检查标记矩阵
grain=imcrop(labeled) %选择并显示已标记的对象和部分背景内的像素
RGB_label=label2rgb(labeled,@spring,'C','shuffle');
%将标记矩阵显示为一副伪彩色的索引图像,在伪彩色的彩色图像中,
%标记矩阵中的每一个对象都将被映射为相关调色板中的不同颜色
imshow(RGB_label);
8.计算图像中对象的统计属性
graindata=regionprops(labeled,'basic')
%测量图像或者区域的属性,并返回一个结构数组。当用于一个标记图像时,%它还为每一个标记分量创建一个结构元素。
graindata(51).Area %显示第51个元素的属性
graindata(51).BoundingBox,graindata(51).Centroid %寻找最近的边缘和中心
allgrains=[graindata.Area]; %创建一个新的向量allgrains,其包含每个米粒的范围
allgrains(51) %查看第51个元素的范围
max(allgrains) %获取最大的米粒大小
biggrain=find(allgrains==404) %返回最大米粒的标记号
mean(allgrains) %获取米粒的平均大小
hist(allgrains,20) %绘制包含20个柱的直方