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,