图像基本运算
图像处理是建立在各种算法基础上的处理方法,图像基本运算主要包括点运算、代数运算(加、减、乘、除)、逻辑运算(与、或、非)和几何运算(平移、镜像、旋转、缩放)。这些基本运算都具有十分重要的意义,如:改变输入图像的灰度级、降低图像的噪声、进行各种各样的几何变换。
1、点运算(Point Operation)
点运算是对图像的每个像素点的灰度值按一定的映射关系运算,得到一福新图片的过程。由于点运算能够有规律的改变像素点的灰度值,故也被称为对比度增强或灰度变换。
1.1线性点运算
线性点运算是指输入图像的灰度级与输出图像呈线性关系。
s=ar+b
(r为输入灰度值,s为相应点的输出灰度值)。
当a=1,b=0时,新图像与原图像相同;
当a=1,b≠0时,新图像是原图像所有像素的灰度值上移或下移,是整个图像在显示时更亮或更暗;
当a>1时,新图像对比度增加;
当a<1时,新图像对比度降低;
当a<0时,暗区域将变亮,亮区域将变暗,点运算完成了图像求补;
MATLAB程序如下:
I=imread('E:\my photo and video\1.jpg');
I=im2double(I);
figure(1);subplot(3,2,1);
imshow(I);
title('原图像','fontsize',7);
a=1;
b=50;
O=a.*I+b/255;
figure(1);
subplot(3,2,2);
imshow(O);title('a=1,b=50,图像变亮','fontsize',7);
a=2;b=0;
O=a.*I+b/255;
figure(1);subplot(3,2,3);imshow(O);
title('a=2,b=0,对比度增大','fontsize',7);
a=0.5;b=0;
O=a.*I+b/255;
figure(1);subplot(3,2,4);imshow(O);
title('a=0.5,b=0,对比度降低','fontsize',7);
a= -1;b=255;
O=a.*I+b/255;
figure(1);subplot(3,2,5);imshow(O);
title('a=-1,b=255,图像反色','fontsize',7);
运行结果:
注:代码中O=a.*I+b/255 ,b除以255原因是:
灰度数据有两种表式方法:一种是用unit8类型,取值0~255;另一种是double类型,取值0~1。两者之间相差255倍。
就这段代码而言,I刚读入时是unit8类型,在第2句转换为double,所以后面涉及到与它进行运算的时候,为了统一,都要转换到0~1的范围,所以要除255。
1.2非线性点运算(Non-Linear Point Operation):
非线性点运算是指输入与输出为非线性关系,常见的非线性灰度变换为对数变换和幂次变换,对数变换一般形式为:
s=clog(1+r)
其中c为一常数,并假设r≥0.此变换使窄带低灰度输入图像映射为宽带输出值,相对的是输出灰度的
高调整。
MATLAB程序如下:
I=im2double(I);
figure(1);subplot(1,2,1);
imshow(I);
title('原图像','fontsize',7);
c=2;
O=c*log(1+I);
figure(1);subplot(1,2,2);imshow(O);
title('c>0','fontsize',7);
运行结果:
幂次变换一般形式:s=cr^γ