数字图像处理
上 机 报 告
姓名: 学号: 班级:
例4.0——图象求反
I=imread('zhx1.jpg'); imshow(I); I=double(I); I=256-1-I; I=uint8(I); figure; imshow(I);
例4.1 分段线性灰度变换
%对于原图pout.tif,将其小于30的灰度值不变, %将30到150的灰度值拉伸到30到200,
%同时压缩150到255的灰度值到200与255之间。
%读入并显示原始图象 I=imread('zhx1.jpg'); imshow(I); I=double(I); [M,N]=size(I);
%进行线性灰度变换 for i=1:M for j=1:N if I(i,j)<=30 I(i,j)=I(i,j); elseif I(i,j)<150
I(i,j)=(200-30)/(150-30)*(I(i,j)-30)+30; else
I(i,j)=(255-200)/(255-150)*(I(i,j)-150)+200; end end
end
%显示变换后的结果
figure(2);imshow(uint8(I));
例4.2 对数变换
%设原图象的灰度值取值范围为[0,512), %现要将原图的灰度压缩到[0,256),
%这时就可以使用对数变换,其公式是t=41*log(1+|s|), I=imread('zhx2.jpg'); figure;imshow(I); I=double(I); I2=42*log(1+I); I2=uint8(I2);
figure;imshow(I2);
例4.3 灰度切割
%灰度切割变换的Matlab程序如下: I=imread('lena.jpg'); figure;imshow(I); I=double(I) [M,N]=size(I); for i=1:M for j=1:N
if I(i,j)<=50 I(i,j)=40; elseif I(i,j)<=180 I(i,j)=220; else
I(i,j)=40; end end end
I=uint8(I);
figure;imshow(I);
例4.4 位图切割
I=imread('zhx2.jpg); imshow(I); I=double(I); [M,N]=size(I); for k=1:8
J=zeros(M,N); for i=1:M for j=1:N
temp=I(i,j); s1=0;s2=0;
range=[k:-1:1]; for d=range
s1=2^(8-d)+s1;s2=2^(8-d+1); if temp>=s1&temp J=uint8(J); figure;imshow(J); end