数字图像实验报告

更新时间:2024-06-14 20:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告

专业名称 班级学号 学生姓名

实验一 图像的基本运算

实验内容 1、程序:

I=imread('lena8.jpg'); figure;

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

J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围 subplot(2,3,2); imshow(J);

title('线性扩展');

I1=double(I); I2=I1/255; C=2;

K=C*log(1+I2); subplot(2,3,3); imshow(K);

title('非线性扩展'); M=im2bw(I,0.5); M=~M;

%M=255-I; %Figure

subplot(2,3,4); imshow(M); title('灰度倒置');

N1=im2bw(I,0.4); N2=im2bw(I,0.7); subplot(2,3,5); imshow(N1);

title('二值化阈值0.4'); subplot(2,3,6); imshow(N2);

title('二值化阈值0.7'); 结果:

%将图像转换为double类型 %归一化此图像 %求图像的对数变换 %将此图像取反 %将此图像二值化,阈值为0.4 %将此图像二值化,阈值为0.7

2、程序:

I=imread('hough.bmp'); %I=rgb2gray(I);

J=imread('rice.bmp');

I=im2double(I); %将图像转换成double型 J=im2double(J);

K=I+0.3*J; %两幅图像相加 subplot(1,3,1); imshow(I); title('物图'); subplot(1,3,2); imshow(J); title('背景图'); subplot(1,3,3); imshow(K);

title('相加后的图'); imwrite(K,'lena1.jpg'); 结果;

3、程序:

A=imread('lena1.jpg'); B=imread('rice.bmp');

A=im2double(A); B=im2double(B); C=A-0.3*B; subplot(1,3,1); imshow(A);

title('混合图'); subplot(1,3,2); imshow(B); title('背景图'); subplot(1,3,3); imshow(C);

title('分离后的图');

结果:

4、程序:

A=imread('rice.bmp'); %A=rgb2gray(A); A=im2double(A); subplot(1,2,1); imshow(A); title('原图');

B=zeros(256,256); B(40:200,40:200)=1; K=A.*B;

subplot(1,2,2); imshow(K); title('局部图'); 结果:

5、程序:

A=imread('lena8.jpg');

Bl=imresize(A,1.5); %比例放大1.5倍,默认的采用的是最近邻法进行线性插

B2=imresize (A, [420 384]); %非比例放大至420:384 Cl=imresize (A, 0 . 7) ; %比例缩小0.7倍 C1=imresize(A, 0.7) ;

C2=imresize(A, [150 180]) ; %非比例缩小到150:180 figure;subplot(2,2,1); imshow(Bl);

title('比例放大图'); subplot(2,2,2); imshow(B2);

title('非比例放大图'); subplot(2,2,3); imshow(C1);

title('比例缩小图'); subplot(2,2,4); imshow(C2);

title('非比例缩小图'); 结果:

实验二 图像的变换

实验内容 1、 程序:

I=imread('1.bmp');

%I=imread('LENA.JPG'); %imshow(I); figure();

subplot(3,2,1); imshow(real(I)); I=I(:,:,3); fftI=fft2(I);

sfftI=fftshift(fftI); %求离散傅里叶频谱

%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱中央位置 RRfdpl=real(sfftI); IIfdpl=imag(sfftI);

a=sqrt(RRfdpl.^2+IIfdpl.^2);

a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; subplot(3,2,2); imshow(real(a)); I=imread('2.bmp');

%I=imread('LENA.JPG'); %imshow(I); subplot(3,2,3); imshow(real(I)); I=I(:,:,3); fftI=fft2(I);

sfftI=fftshift(fftI); %求离散傅里叶频谱

%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱中央位置 RRfdpl=real(sfftI); IIfdpl=imag(sfftI);

a=sqrt(RRfdpl.^2+IIfdpl.^2);

a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; subplot(3,2,4); imshow(real(a)); I=imread('3.bmp');

%I=imread('LENA.JPG'); %imshow(I); subplot(3,2,5); imshow(real(I)); I=I(:,:,3); fftI=fft2(I);

sfftI=fftshift(fftI); %求离散傅里叶频谱

%对原始图像进行二维离散傅里叶变换,并将其坐标原点移到频谱中央位置 RRfdpl=real(sfftI); IIfdpl=imag(sfftI);

a=sqrt(RRfdpl.^2+IIfdpl.^2);

a=(a-min(min(a)))/(max(max(a))-min(min(a)))*225; subplot(3,2,6); imshow(real(a));

结果:

2、程序:

I=zeros(256,256);

I(88:168,124:132)=1; %图像范围是256*256,前一值是纵向比,后一值是横向比

figure(),subplot(2,2,1);

imshow(I); %求原始图像的傅里叶变换 J=fft2(I); F=abs(J); J1=fftshift(F); subplot(2,2,2); imshow(J1,[5 50]); %对原始图像进行旋转

J=imrotate(I,90,'bilinear','crop'); subplot(2,2,3); imshow(J);

%求旋转后图像的傅里叶频谱 J1=fft2(J); F=abs(J1); J2=fftshift(F); subplot(2,2,4); imshow(J2,[5 50]);

结果:

3、程序:

%对 lena24.jpg文件计算二维DCT变换 RGB = imread('lena24.jpg'); figure(1),subplot(1,3,1); imshow(RGB); I = rgb2gray(RGB);

%真彩色图像转换成灰度图像 J = dct2(I);

%计算二维DCT变换 subplot(1,3,2);

imshow(log(abs(J)),[]);

%对图像大部分能量集中在上右角处 subplot(1,3,3); J(abs(J) < 10) = 0;

%吧变换矩阵镇南关小于10的值置换为0,然后用idc2重构图像 K = idct2(J)/255; imshow(K); 结果:

4、程序:

RGB = imread('lena24.jpg'); I=rgb2gray(RGB);

I = im2double(I); %转换图像矩阵为双精度型 T = dctmtx(8); %产生二维00?变换矩阵,

%矩阵T及其转置T‘是DCT函数P1*X*P2的参数 B = blkproc(I, [8 8],'P1*x*P2',T,T'); mask1= [ 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];

%二值掩模,用来压缩DCT系数 B2=blkproc(B,[8 8],'P1.*x',mask1); %只保留DCT变换的10个系数 I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %重构图像

figure,imshow(I); figure,imshow(B2); figure,imshow(I2); 结果:

实验三 图像的增强

实验内容 1、程序: clear all close all

I{1}=double(imread('lena8.jpg')); I{1}=I{1}/255;

figure(1),subplot(2,4,1),imshow(I{1},[]),hold on I{2}=double(imread('lena1.jpg')); I{2}=I{2}/255;

subplot(2,4,5),imshow(I{2},[]),hold on for m=1:2 Index=0;

for lemta=[0.5 5] Index=Index+1;

F{m}{Index}=I{m}.^lemta; subplot(2,4,(m-1)*4+Index+1), imshow(F{m}{Index},[]) end end 结果:

2、程序: clear all close all %0.读图像

I=double(imread('lena8.jpg')); figure,

imshow (I,[]) N=32;

Hist_image=hist (I(:),N) ; %直方图

Hist_image=Hist_image/sum (Hist_image); Hist_image_cumulation=cumsum(Hist_image); %累计直方图 figure,

stem([0:N-1] ,Hist_image) ; %1.设计目标直方图 Index=0:N-1; Index=0:7;

%正态分布直方图

Hist{1}=exp(-(Index-4).^2/8); Hist{1}=Hist{1}/sum(Hist{1});

Hist_cumulation{1}=cumsum(Hist{1}); figure,

stem([0:7],Hist{1}) %倒三角形状直方图 Hist{2}=abs(15-2*Index);

Hist{2}=Hist{2}/sum(Hist{2});

Hist_cumulation{2}=cumsum(Hist{2}); figure,

stem([0:7],Hist{2}) %2.规定化处理 for m=1:2 Image=I;

%2.1 SML处理 for k=1:N

Temp=abs(Hist_image_cumulation(k)-Hist_cumulation{m}); [Tempi,Project{m}(k)]=min(Temp); end

%2.2变换后直方图 for k=1:N

Temp=find(Project{m}==k); if isempty(Temp)

Hist_result{m}(k)=0; else

Histresult{m}(k)=sum(Hist_image(Temp)); end end figure,

stem([0:31],Hist_result{m}); %2.3结果图 Step=256/N; for k=1:N

Index=find(I>=Step*(k-1)&I

imshow(Image,[]) end 结果:

3、程序: clear all close all

I=double(imread('lena8.jpg')); figure,subplot(2,4,1); imshow(I,[]);

% 1.均值低通滤波 H=fspecial('average',5); F{1}=double(filter2(H,I));

subplot(2,4,2);,imshow(F{1},[]); % 2 . gaussian低通滤波

H=fspecial('gaussian',7,3); F{2}=double(filter2(H,I)); subplot(2,4,3);,imshow(F{2},[]); % 3.增强图像-原图-均值低通滤波 F{3}=2*I-F{1};

subplot(2,4,4);,imshow(uint8 (F{3}),[]); % 4.增强图像=原图-高斯低通滤波 F{4}=2*I-F{2};

subplot(2,4,5);,imshow(uint8 (F{4}),[]); %5. ‘prewitt’边缘算子增强 H=fspecial('prewitt');

F{ 5}=uint8(I+filter2(H,I)); subplot(2,4,6);,imshow(F{5},[]); %6. ‘sobel’边缘算子增强 H=fspecial('sobel');

F{6}=uint8(I + filter2(H,I)); subplot(2,4,7);,imshow(F{6},[]); 结果:

实验四 图像的复原

实验内容 1、程序: clear; close all;

%1.生成含噪图像

img = imread('lena8.bmp'); figure,subplot(2,3,1); imshow(img);

img =double(imnoise(img,'salt & pepper', 0.01)); subplot(2,3,2); ,imshow(img,[]); %2.采用均值滤波 N=5; %滤波模板大小 h=fspecial('average',N); I=filter2(h,img);

subplot(2,3,3); ,imshow(I,[]) %3.中值滤波

I=medfilt2(img,[N N]); subplot(2,3,4); ,imshow(I,[]) %4.最大值滤波

I=ordfilt2(img,N*N,true(N)); subplot(2,3,5); ,imshow(I,[]) %5.最小值滤波

I=ordfilt2(img,1,true(N)); subplot(2,3,6); ,imshow(I,[]) 结果:

2、程序: close all clear all

%1.生成波纹噪声图像

img = double(imread('lena8.bmp')); figure,subplot(2,3,1); imshow(img,[]); sizec=size(img);

w=0.4*2*pi; %噪声的数字频率

N=2*pi/w; %噪声每一周期的采样点数

img_noise=img+20*ones(sizec(1),1)*sin(w*[1:sizec(2)]); subplot(2,3,2); ,imshow(img_noise,[]); %图像频谱 F0=fft2(img); F0=fftshift(F0);

subplot(2,3,3); ,imshow(log(abs(F0)),[]); F=fft2(img_noise); F=fftshift(F);

subplot(2,3,4); ,imshow(log(abs(F)),[]); %2.设计理想陷波滤波器 H=ones(sizec(1),sizec(2)); %图像中心点 x0=sizec(1)/2+1; y0=sizec(2)/2+1;

%噪声所处频率点(x,y) x=x0;

y=y0-round(sizec(2)/N); H (x,y-3:y+3)=0;

H(x,(y0-y)+y0-3:(y0-y)+y0+3)=0; %3.滤波结果 I=ifftshift(F.*H); imgl=ifft2(I);

subplot(2,3,5); ; imshow(imgl,[]); 结果:

本文来源:https://www.bwwdw.com/article/why3.html

Top