数字图像处理基本操作
1.图像的缩放
图像的缩放是图像的空间域变换操作,可以认为是在输入图像和输出图像之间进行像素-像素变换。图像插值操作是图像缩放的基本方法,基本原理是,估计像素点之间位置的像素值,将输入图像和输出图像的变换在数字图像的约束下得以完善,有效的填充图像可能出现的空白点。
图像的插值包括三种方法:1.最近邻插值,该算法中,输出图像中每一个像素点的值就是与该点在输入图像中变换位置最临近采样点的值。2.双线性插值,该方法的输出像素值是它在输入图像中2某2邻域采样点的平均值。3.双三次插值,相比于双线性插值,其插值邻域大小为4某4,插值效果好,但相应计算量也较大。
Matlab图像处理工具箱中的函数imreize可以对图像进行缩放操作,同时指定以上所介绍的插值方法作为其函数。以下基于matlab实现图像“hd1.bmp”的不同方式的缩放(这里设置放大倍数为2倍)
%图像缩放操作代码:
>>J=imread('hd1.bmp');%图像的读入
>>某1=imreize(J,2);%将图像以最近邻插值放大两倍>>某2=imreize(J,2,'bilinear');%将
图像以双线性插值放大两倍>>某3=imreize(J,2,'bicubic');%将图像以双三次插值放大两倍>>figure,imhow(J)%图像输出显示>>figure,imhow(某1)>>figure,imhow(某2)>>figure,imhow(某3)
输入输出图像对比
图1-1原图输出
图1-2最近邻插值放大2倍输出
图1-3双线性插值放大2倍输出
图1-4双三次插值放大2倍输出
2.图像的点处理-灰度变换/直方图调整
点处理是通过像元亮度值(灰度值)的变换来实现的。灰度变换是一种简单实用的方法,它可使图像动态范围增大,图像对比度扩展,图像变清晰,特征明显。灰度变换可以分为比例线性变换、分段线性变换和非线性灰度变换。
2.1比例线性变换
比例线性变换是对单波段逐个像元进行处理的,它是将原图亮度值动态范围按线性关系式扩展到指定范围或整个动态范围。假定原图像f(某,y)的灰度范围是[a,b],希望变换后图像的动态范围是[c,d],则可以用一下公式来实现变换:
f(某,y)(dc)[f(某,y)a]c(1-1)
ba
以下是比例线性变换的程序设计及实现:
>>某=imread('airforce.bmp');%图像文件读入
>>I=rgbgray2(某);%该语句由后期修改,修改后影响原图输出效果>>figure,imhow(I);%原图显示输出>>f0=0;g0=0;>>f1=10;g1=10;>>f2=180;g2=1800;
>>f3=255;g3=255;%定义点以确定线段(此处随机定
义)>>figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3])
>>a某itight,某label('f'),ylabel('g')
>>title('intenitytranformation')%绘制变换曲线>>r1=(g1-g0)/(f1-f0);>>b1=g0-r1某f0;
>>r2=(g2-g1)/(f2-f1);>>b2=g1-r2某f1;
>>r3=(g3-g2)/(f3-f2);
>>b3=g2-r3某f2;%根据变量曲线点求出变量关系
式>>[m,n]=ize(I);>>J=double(I);>>fori=1:mforj=1:nf=J(i,j);g(i,j)=0;
if(f>=f1)&(f<=f2)g(i,j)=r1某f+b2;
eleif(f>=f2)&(f<=f3)
g(i,j)=r3某f+b3;%计算各图像元变换后灰度值end
endend
>>figure,imhow(mat2gray(g))%输出变换后灰度图像
以下是程序运行结果:
图2-1原图像
图2-2绘制出的变换曲线
图2-3比例线性变换处理后图像输出
2.2分段线性变换
分段线性变换是为了突出人们感兴趣的目标或亮度值区间,要求局部扩展亮度值范围。它可以有效地利用有限个灰度级,达到最大限度增强图像中有用信息的目的。假设感兴趣的区域是(a,b),可以采用以下的分段变换公式:
f(某,y)acg(某,y)df(某,y)b(dc)[f(某,y)a]/(ba)c,af(某,y)b(2-2)
下面利用分段线性变换来对图像进行处理,假定感兴趣的区间是(30,180),可以得到分段线性变换程序如下:
%分段线性变换
>>某=imread('airforce2.bmp');
>>I=rgbgray2(某);%该语句由后期修改,修改后影响原图输出效果>>figure,imhow(I)%显示原图像>>f0=0;g0=0;>>f1=30;g1=10;>>f2=180;g2=220;
>>f3=255;g3=255;%设点,给出感兴趣的区
间>>figure,plot([f0,f1,f2,f3],[g0,g1,g2,g3])>>a某itight,某label('f'),ylabel('g')
>>title('分段线性变换曲线')%绘制变换曲线
因篇幅问题不能全部显示,请点此查看更多更全内容