一些图像处理函数用法(精华)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一些图像处理函数用法(精华)

imshow

imshow是用来显示图片的,如

I = imread('moon.tif');

figure,imshow(I);

而有时为了数据处理,要把读取的图片信息转化为更高的精度,

I = double(imread('moon.tif'));

为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型。如果直接运行imshow(I),我们会发现显示的是一个白色的图像。这是因为imshow()显示图像时对double型是认为在0~1范围内,即大于1时都是显示为白色,而imshow显示uint8型时是0~255范围。而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。

有两个解决方法:

1、imshow(I/256); -----------将图像矩阵转化到0-1之间

2、imshow(I,[]); -----------自动调整数据的范围以便于显示

从实验结果看两种方法都解决了问题,但是从显示的图像看,第二种方法显示的图像明暗黑白对比的强烈些!图像为y,为何用imshow(uint8(y))和imshow(y,[])时的图像显示结果不同?

回答:

imshow(uint8(y))是按照256级灰度显示y得绝对数据。0表示黑色,255表示白色,y中大于255的值强制为255。

imshow(y,[]),将y中的最小值看作0(black),最大值看作255(white) -->增加图像的对比度。

所以两者不同。

padarray

功能:填充图像或填充数组。

用法:B = padarray(A,padsize,padval,direction)

A为输入图像,B为填充后的图像,

padsize给出了给出了填充的行数和列数,通常用[r c]来表示,

padval和direction分别表示填充方法和方向。

它们的具体值和描述如下:

padval:'symmetric' 表示图像大小通过围绕边界进行镜像反射来扩展;

'replicate' 表示图像大小通过复制外边界中的值来扩展;

'circular' 图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。

direction:'pre' 表示在每一维的第一个元素前填充;

'post' 表示在每一维的最后一个元素后填充;

'both' 表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。

若参量中不包括direction,则默认值为'both';若参量中不包含padval,则默认用零来填充。若参量中不包括任何参数,则默认填充为零且方向为'both'。在计算结束时,图像会被修剪成原始大小。

举例:

A = [1 2; 3 4];

B = padarray(A,[3 2],'replicate','post')

Imfinfo

imfinfo函数用于读取图象文件的有关信息,其语法格式为

imfinfo(filename,fmt)

imfinfo函数返回一个结构info,它反映了该图象的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。

Imhist

MATLAB图象处理工具箱提供了imhist函数来计算和显示图象的直方图,imhist函数的语法格式为:

imhist(I,n)

imhist(X,map)

其中imhist(I,n)计算和显示灰度图象I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图象X的直方图,map为调色板。

例:

I = imread('rice.tif');

imshow(I)

figure, imhist(I)

imadjust —>对比度增强

如果原图象f(x,y)的灰度范围是[m,M],我们希望调整后的图象g(x,y)的灰度范围是[n,N],那么下述变换就可以实现这一要求。

MATLAB图象处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:

J = imadjust(I,[low_in high_in],[low_out high_out])

J = imadjust(I,[low_in high_in],[low_out high_out])返回图象I经过直方图调整后的图象J,[low_in high_in]为原图象中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。

例:

I = imread('pout.tif');

J = imadjust(I,[0.3 0.7],[]);

imshow(I), figure, imshow(J)

imresize

几何运算可改变图像中各物体之间的空间关系。这种运算可以被看成是将(各)物体在图像内移动。一个几何运算需要两个独立的算法。首先,需要一个算法来定义空间变换本身,用它来描述每个像素如何从其初始位置“移动”到终止位置,即每个像素的“运动”。同时,还需要一个用于灰度插值的算法,这是因为,在一般情况下,输入图像的位置坐标(x,y)为整数,而输出图像的位置坐标为非整数,反过来也如此。因此插值就是对变换之后的整数坐标位置的像素值进行估计。MATLAB提供了一些函数实现这些功能。

插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实的曲线,用这个重建的函数便可以求出任意位置的函数值。

最近邻插值是最简便的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。最近邻插值是工具箱函数默认使用的插值方法,而且这种插值方法的运算量非常小。当图像中包含像素之间灰度级变化的细微结构时,最近邻插值法会在图像中产生人工的痕迹。

双线性插值法的输出像素值是它在输入图像中2×2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。

双三次插值的插值核为三次函数,其插值邻域的大小为4×4。它的插值效果比较好,但相应的计算量也比较大。

MATLAB图像处理工具箱中的函数imresize可以用上述的3种方法对图像进行插值缩放,如果不指定插值方法,则默认为最邻近插值法。

Imresize函数的语法格式为:

B = imresize(A,m,method)

参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。

B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是缩小)。Imnoise

在MATLAB中提供了给图像加入噪声的函数imnoise

imnoise的语法格式为

J = imnoise(I,type)

J = imnoise(I,type,parameters)

其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。

参数type和parameters用于确定噪声的类型和相应的参数。

下面的命令是对图像eight.tif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:

I=imread('eight.tif');

J1=imnoise(I,'gaussian',0,0.02);

J2=imnoise(I,'salt & pepper',0.02);

J3=imnoise(I,'speckle',0.02);

subplot(2,2,1),imshow(I),title('原图像');

相关文档
最新文档