⑴虽然说Matlab是一款数学处理软件,但是这款软件特别强大,强大之处在于他还能够处理图像,这个功能是很多新手学习Matlab的时候感到惊讶的地方,下面就给大家介绍Matlab处理图像的方法。
⑵一、图像基本操作
⑶、读取图像并显示:
⑷》》 clear;close all %清空Matlab工作平台所有变量(准备工作
⑸》》 I=imread(‘pout.tif’; % 该图像是Matlab图形工具箱中自带的图像( oolboximagesimdemos
⑹》》 imshow(I
⑺、检查内存(数组中的图像:
⑻Name Size Bytes Class
⑼I x uint array
⑽Grand total is elements using bytes
⑾表示该图像采用位存储方式并占用了B的存储空间。
⑿、实现图像直方图均衡化:
⒀》》 figure,imhist(I % 在新图中显示图像I的直方图
⒁》》 I=histeq(I; % 均衡化以后的图像存在I数组中(图像灰度值扩展到整个灰度范围,对比度提高
⒂》》 figure,imshow(I % 显示均衡化后的图像
⒃》》 figure,imhist(I % 显示均衡后的灰度值分布情况
⒄位图像取值范围:[,],位图像取值范围:[,],双精度图像取值范围:[,]
⒅》》 imwrite(I,‘pout.png’; % 将图像由原先的tif格式另存为png格式
⒆、检查新生成文件的信息:
⒇》》 imfinfo(‘pout.png’ % 观察保存图像的文件信息
⒈Filename: ‘pout.png’ % 文件名
⒉FileModDate: ‘-Apr- ::’ % 文件修改日期
⒊FileSize: % 文件大小
⒋Format: ‘png’ % 文件格式
⒌FormatVersion: [] % 格式
⒍Width: % 文件宽度
⒎Height: % 文件高度
⒏BitDepth: % 文件位深度
⒐ColorType: ‘grayscale’ % 颜色类型
⒑……
⒒二、图像处理Matlab的应用:
⒓实例:消除rice.png图像中亮度不一致的背景,并使用阈值将修改后的图像转换为二值图像,使用成员标记返回图像中对象的个数以及统计特性。按照如下步骤进行:
⒔、读取和显示图像
⒕》》 clear;close all
⒖》》 I=imread(‘rice.png’;
⒗》》 imshow(I
⒘、估计图像背景:
⒙图像中心位置背景亮度强于其他部分亮度,用imopen函数和一个半径为的圆盘结构元素对输入的图像I进行形态学开操作,去掉那些不完全包括在圆盘中的对象,从而实现对背景亮度的估计。
⒚》》 clear;close all
⒛》》 I=imread(‘rice.png’;
①》》 imshow(I
②》》 background=imopen(I,strel(‘disk’,;
③》》 imshow(background
④》》 figure,surf(double(background(::end,::end,zlim([,];
⑤》》 set(gca,‘ydir’,‘reverse’;
⑥显示了背景图(左和背景表面图(右
⑦、从原始图像中减去背景图像(原始图像I减去背景图像得到背景较为一致的图像:
⑧》》 I=imsubtract(I,background;
⑨》》 figure,imshow(I
⑩、调节图像的对比度 (图像较暗,可用imadjust函数命令来调节图像的对比度
Ⅰ》》 I=imadjust(I,stretchlim(I,[ ];
Ⅱ》》 figure,imshow(I;
Ⅲ、使用阈值操作将图像转换为二进制(二值图像(bw,调用whos命令查看图像的存储信息。
Ⅳ》》 level=graythresh(I; % 图像灰度处理
Ⅴ》》 bw=imbw(I,level; % 图像二值化处理
Ⅵ》》 figure,imshow(bw % 显示处理后的图片
ⅦName Size Bytes Class
ⅧI x uint array
ⅨI x uint array
ⅩI x uint array
㈠background x uint array
㈡bw x logical array
㈢level x double array
㈣Grand total is elements using bytes
㈤、检查图像中对象个数(bwlabel函数表示了二值图像中的所有相关成分并返回在图像中找到的对象个数
㈥》》 [labeled,numObjects]=bwlabel(bw,;
㈦》》 numObjects
㈧numObjects =
㈨表示图像中的米粒对象个数是.
㈩、检查标记矩阵:(imcrop命令进行交互式操作,图像内拉出较小矩形并显示已标记的对象和部分背景内的像素
》》 grain=imcrop(labeled
、观察标记矩阵(用labelrgb将其显示为一副伪彩色的索引图像:
》》 RGB_label=labelrgb(labeled,spring,‘c’,‘shuffle’;
》》 imshow(RGB_label;
、测量图像对象或区域的属性(Regionprops,返回一个结构数据
》》 graindata=regionprops(labeled,‘basic’
graindata =
x struct array with fields:
Centroid
BoundingBox
》》 graindata(.Area % 显示矩阵中第个元素的属性
》》 graindata(.BoundingBox,graindata(.Centroid % 寻找最近的边缘和中心点
》》 allgrains=[graindata.Area]; % 创建一个新的向量allgrains,其包含每个米粒的范围
》》 whos allgrains
Name Size Bytes Class
allgrains x double array
Grand total is elements using bytes
》》 allgrains( % 相当于整个矩阵的索引为的属性是多少,可见与原来得到的结果相同
》》 max(allgrains % 获取最大的米粒大小
》》 biggrain=find(allgrains== % 使用find命令返回这个最大尺寸米粒的标记号
biggrain =
》》 mean(allgrains % 获取米粒的平均大小
、绘制包含个柱的直方图来说明米粒大小的分布情况
》》 hist(allgrains,
米粒大小分布柱状图
以上几点便是Matlab图像处理的基本操作,多次使用后你会发现这些方法在使用Matlab的过程中很实用,并且使用起来非常简单。以上便是关于Matlab图像处理方法的基本操作,希望对你的学习有所帮助。