实验二数字图像变换
数字图像处理实验报告

数字图像处理实验报告实验一数字图像处理编程基础一、实验目的1. 了解MATLAB图像处理工具箱;2. 掌握MATLAB的基本应用方法;3. 掌握MATLAB图像存储/图像数据类型/图像类型;4. 掌握图像文件的读/写/信息查询;5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法;6. 编程实现图像类型间的转换。
二、实验内容1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。
2. 运行图像处理程序,并保存处理结果图像。
三、源代码I=imread('cameraman.tif')imshow(I);subplot(221),title('图像1');imwrite('cameraman.tif')M=imread('pout.tif')imview(M)subplot(222),imshow(M);title('图像2');imread('pout.bmp')N=imread('eight.tif')imview(N)subplot(223),imshow(N);title('图像3');V=imread('circuit.tif')imview(V)subplot(224),imshow(V);title('图像4');N=imread('C:\Users\Administrator\Desktop\1.jpg')imshow(N);I=rgb2gary(GRB)[X.map]=gary2ind(N,2)RGB=ind2 rgb(X,map)[X.map]=gary2ind(I,2)I=ind2 gary(X,map)I=imread('C:\Users\dell\Desktop\111.jpg');subplot(231),imshow(I);title('原图');M=rgb2gray(I);subplot(232),imshow(M);[X,map]=gray2ind(M,100);subplot(233),imshow(X);RGB=ind2rgb(X,map);subplot(234),imshow(X);[X,map]=rbg2ind(I);subplot(235),imshow(X);四、实验效果实验二 图像几何变换实验一、实验目的1.学习几种常见的图像几何变换,并通过实验体会几何变换的效果;2.掌握图像平移、剪切、缩放、旋转、镜像等几何变换的算法原理及编程实现;3.掌握matlab 编程环境中基本的图像处理函数。
数字图像实验:图像点运算

%**********************%实验二:图像点运算%********************%一.使用函数imadjust实现图像灰度变换I=imread('C:\Documents and Settings\Administrator\桌面\数值图像处理实验\16学时实验\实验二\fig0222b.jpg');g1= imadjust (I, [ 0.31875 0.7 ], [ 0 0.7 ], 0.5 );g2= imadjust (I, [ 0.31875 0.7], [ 0 0.7 ], 1 );g3= imadjust (I, [ 0.31875 0.7], [ 0 0.7 ], 2 );g4= imadjust (I, [ 0 0.7 ], [ 0.7 0.0078431], 1 );figure(1)subplot(221);imshow(g1);subplot(222); imshow(g2);subplot(223);imshow(g3);subplot(224); imshow(g4);clear;%二。
观察并记录均衡前后的差别f2=imread('C:\Documents and Settings\Administrator\桌面\数值图像处理实验\16学时实验\实验二\fig0305.tif');g5= im2uint8(mat2gray(log(1+double (f2))));figure(2)subplot(121);imshow(f2);subplot(122);imshow(g5);clear;%三。
使用函数imhist绘制灰度直方图,观察四种直方图的差别f3=imread('C:\Documents and Settings\Administrator\桌面\数值图像处理实验\16学时实验\实验二\fig0222b.jpg');h = imhist( f3 );figure(3)subplot(221);imhist( f3 );subplot(222); plot( h );subplot(223);stem( h );subplot(224); bar( h );clear;%四。
数字图像处理作业(第两次) 基于灰度变换的图像增强

数字图像处理作业(第两次) 基于灰度变换的图像增强第一题 利用幂律变换进行图像增强(实现例3.1)1. 问题重现例3.1中的实验,即用幂律变换对冈萨雷斯《数字图像处理(第3版)》Fig.3.8(a)中的图像进行变换。
c 取1, gamma 分别取0.6,0.4,0.3,观察何时获得最佳的增强效果。
2. 算法步骤:1)将Fig.3.8(a) 中的图像读入矩阵X 中2)输入参数c 和gamma 的值3)显示图像X ;4)利用参数c 和gamma 的值对X 进行幂律变换,得到变换后的图像Y5)显示变换后的图像Y 。
3.程序:(1) 幂律变换的程序:function Y=power_enhance(X, gamma, c)% 对输入图像X 进行幂律变换if ~isa(X,'double')X=im2double(X);endY=c*X.^gamma;(2) 主程序:X=imread('Fig0308(a)(fractured_spine).tif');figure(1)imshow(X);c=1; gamma=0.3;Y= power_enhance(X, gamma, c);figure(2)imshow(Y)c=1,gamma=0.3时的运行结果: c=1, gamma=0.4时的运行结果: c=1, gamma=0.6时的运行结果:5. 实验结果分析随着伽马值从0.6减小到0.4,更多的细节变得可见了。
当伽马值进一步减小到0.3时,背景中的细节得到了进一步增强,但对比度会降低到图像开始有轻微“冲淡”外观的那一点,尤其是在背景中。
比较所有的结果,在对比度和可辨识方面的最好增强在0.4时。
第二题 利用幂律变换进行图像增强(实现例3.2)1. 问题重现例3.2中的实验,即用幂律变换对冈萨雷斯《数字图像处理(第3版)》Fig.3.9(a)中的图像进行变换。
c 取1, gamma 分别取3, 4 和5 ,观察何时获得最佳的增强效果。
数字图像处理实验报告

目录实验一:数字图像的基本处理操作 (4):实验目的 (4):实验任务和要求 (4):实验步骤和结果 (5):结果分析 (8)实验二:图像的灰度变换和直方图变换 (9):实验目的 (9):实验任务和要求 (9):实验步骤和结果 (9):结果分析 (13)实验三:图像的平滑处理 (14):实验目的 (14):实验任务和要求 (14):实验步骤和结果 (14):结果分析 (18)实验四:图像的锐化处理 (19):实验目的 (19):实验任务和要求 (19):实验步骤和结果 (19):结果分析 (21)实验一:数字图像的基本处理操作:实验目的1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。
3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。
:实验任务和要求1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
:实验步骤和结果1.对实验任务1的实现代码如下:a=imread('d:\');i=rgb2gray(a);I=im2bw(a,;subplot(1,3,1);imshow(a);title('原图像');subplot(1,3,2);imshow(i);title('灰度图像');subplot(1,3,3);imshow(I);title('二值图像');subplot(1,3,1);imshow(a);title('原图像');结果如图所示:图原图及其灰度图像,二值图像2.对实验任务2的实现代码如下:a=imread('d:\');A=imresize(a,[800 800]);b=imread('d:\');B=imresize(b,[800 800]);Z1=imadd(A,B);Z2=imsubtract(A,B);Z3=immultiply(A,B);Z4=imdivide(A,B);subplot(3,2,1);imshow(A);title('原图像 A'); subplot(3,2,2);imshow(B);title('原图像 B'); subplot(3,2,3);imshow(Z1);title('加法图像'); subplot(3,2,4);imshow(Z2);title('减法图像'); subplot(3,2,5);imshow(Z3);title('乘法图像'); subplot(3,2,6);imshow(Z2);title('除法图像');结果如图所示:3.对实验任务3的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j); %直流分量移到频谱中心I=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶变换频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶变换频谱');结果如图所示:4.对实验任务4的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j);I=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=imrotate(s,-90);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱');结果如图所示::结果分析对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。
数字图像处理图像变换实验报告.

实验报告实验名称:图像处理姓名:刘强班级:电信1102学号:1404110128实验一图像变换实验——图像点运算、几何变换及正交变换一、实验条件PC机数字图像处理实验教学软件大量样图二、实验目的1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;3、观察图像的灰度直方图,明确直方图的作用和意义;4、观察图像点运算和几何变换的结果,比较不同参数条件下的变换效果;5、观察图像正交变换的结果,明确图像的空间频率分布情况。
三、实验原理1、图像灰度直方图、点运算和几何变换的基本原理及编程实现步骤图像灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。
图像点运算是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。
点运算可以看作是“从象素到象素”的复制操作,而这种复制操作是通过灰度变换函数实现的。
如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:B(x,y)=f[A(x,y)]其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系。
一旦灰度变换函数确定,该点运算就完全确定下来了。
另外,点运算处理将改变图像的灰度直方图分布。
点运算又被称为对比度增强、对比度拉伸或灰度变换。
点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸和均衡等。
图像几何变换是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放和图像旋转等,其理论基础主要是一些矩阵运算,详细原理可以参考有关书籍。
实验系统提供了图像灰度直方图、点运算和几何变换相关内容的文字说明,用户在操作过程中可以参考。
下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:2、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法和频域法,点运算和几何变换属于空域法。
数字图像处理实验教程

目录图像处理实验(一) (1)——MATLAB初步(2学时) (1)图像处理实验(二) (3)——图像运算(4学时) (3)图像处理实验(三) (7)——直方图(2学时) (7)图像处理实验(四) (10)——图像变换(2学时) (10)图像处理实验(五) (12)——图像增强(4学时) (12)图像处理实验(六) (16)——图像压缩(4学时) (16)图像处理实验(一)——MATLAB初步(2学时)一、实验目的:1.熟悉MATLAB的工作环境2.掌握图像的读取和显示3.如何得到一副图像的基本信息4.图像类型的转化二、实验原理计算机只能处理数字图像,数字图像在计算机中是以矩阵的形式存储的。
MA TLAB中能够处理四种类型的图形,分别是二值图像、灰度图像、索引图像以及彩色图像。
每一种类型的图像的特征是不一样的,我们可以利用MATLAB中提供的图像类型转换函数进行相互转换。
三、实验步骤:实验准备:先获取一些图片信息,包括二值图像,灰度图像,彩色图像1.在MATLAB中利用imread函数读取一副图像F=Imread(‘test.bmp’);2.利用size函数得到这幅图像的行数和列数Size f3.利用whos函数得到这幅图像的基本信息Whos(f)4.利用imshow显示这幅图像Imshow(f)四、实验仪器1.计算机;2.MATLAB程序;3.移动式存储器(软盘、U盘等)。
4.记录用的笔、纸。
五、实验报告内容1.叙述实验过程;2.提交实验的原始图像和结果图像。
图像处理实验(二)——图像运算(4学时)一、实验目的:1. 熟悉MATLAB 的工作环境2. 掌握图像的基本运算:点运算、代数运算以及几何运算二、实验原理数字图象处理的算法很多,有对图像进行线性运算的,也有对多个图像进行处理的,还有从图像中提取特征的。
我们按照图像处理的输入输出形式,可以将图像处理的算法可分为一下三种形式。
1)单幅图像 → 单幅图像 。
数字图像处理实验指导书资料

实验一 灰度图像的对比度线性展宽一、实验目的让学生通过使用对图像采用线性对比度展宽的方法进行处理,获得对图像画质的改善。
二、实验原理与方法对比度线性展宽处理,其实质是对图像灰度值的一个线性映射——通过这种方式来实现突出图像中重要信息的目的。
通常情况下,处理前后的图像灰度级是相同的,即处理前后的图像灰度级都为[0,255]。
那么,从原理上讲,我们就只能通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度展宽。
设原图像的灰度为),(j i f ,处理后的图像的灰度为),(j i g ,对比度线性展宽的原理示意图如图1.1所示。
假设原图像中我们关心的景物的灰度分布在[a f ,b f ]区间内,处理后的图像中,我们关心的景物的灰度分布在[a g ,b g ]区间内。
在这里)(a b g g g -=∆)(a b f f f -=∆<,也就是说我们所关心的景物的灰度级得到了展宽。
根据图中所示的映射关系中分段直线的斜率我们可以得出线性对比度展宽的计算公式:b g a g a b )j图1.1 对比度线性展宽映射关系),(j i f α, a f j i f <≤),(0=),(j i g a a g f j i f +-)),((β,b a f j i f f <≤).,( (1-1)b b g f j i f +-)),((γ,255),(<≤j i f f b(m i ,3,2,1 =;n j ,3,2,1 =) 其中,a a f g =α,a b a b f f g g --=β,bbf g --=255255γ,图像的大小为m ×n 。
三、实验内容与步骤1.熟悉MATLAB 语言的使用,主要包括图像处理相关的语句、表达式,以及变量的使用。
2.按照所给出的参考伪代码编写程序,实现对一幅灰度图像的对比度线性展宽。
3.调整α,β,γ的值,观察对处理结果的影响。
四、思考问题1.在映射关系中,分段直线的斜率的大小对图像处理结果有哪些影响? 2.在进行对比度展宽的时候,如果确定和选取所关心的景物?五、参考伪代码程序[image, map]=imread(‘实验图像.BMP’);%读入一幅灰度图像,放在二维数组变量image 中。
数字图像处理实验二(直方图均衡化)

数字图像处理实验二直方图均衡化(直方图均衡化实质上是减少图象的灰度级以换取对比度的加大)例如:假设原图的灰度分布级为126(最大为256,也就是从0到255的级上的灰度都有或多或少的出现),经过直方图均衡化后,灰度分布级别将会小于126。
编程的时候请按照直方图均衡化公式进行。
下面给出大致的编程思路和源代码:其中黑框部分需要自己编写源代码1)利用第一次实验课提供的dhc.h 和dhc.c文件以获取位图的高宽以及从文件头到实际的位图数据的偏移字节数,从而实现对位图实际数据的操作。
利用include命令#include <stdio.h>#include <stdlib.h>#include <memory.h>#include "hdr.h"思考问题:#include <*.h> 和#include "*.h"在程序运行中有什么差别?2)定义结构指针struct bmphdr *hdr;定义用于直方图变量unsigned char *bitmap, new_color[256];定义计算灰度分布,灰度累计分布的数组int count[256], acum[256];3)main()函数编写//定义整数i,j 用于函数循环时的,nr_pixels为图像中像素的个数int i, j, nr_pixels;//定义两个文件指针分别用于提取原图像的数据和生成直方图均衡化后的图像FILE *fp, *fpnew;//定义主函数的参数包括:输入的位图文件名和输出的位图文件名,此处内容可以不要,在DOS下执行命令的时候再临时输入也可,为了方便演示,我这里直接把函数的参数确定了。
argc=3;argv[1]="test.bmp";argv[2]="testzf.bmp";//参数输入出错显示if (argc != 3) {printf("please input the name of input and out bitmap files\n");exit(1);}// 获取位图文件相关信息hdr = get_header(argv[1]);if (!hdr) exit(1);//以二进制可读方式打开输入位图文件fp = fopen(argv[1], "rb");if (!fp) {printf("File open error!\n");exit(1);}// 文件指针指向数据区域fseek(fp, hdr->offset, SEEK_SET);//计算位图像素的个数nr_pixels = hdr->width * hdr->height;bitmap = malloc(nr_pixels);//读取位图数据到bitmap中fread(bitmap, nr_pixels, 1, fp);fclose(fp);memset(count, 0, sizeof(count));//计算每个灰度级上像素的个数结果存入count[]数组中memcpy(acum, count, sizeof(acum));//计算灰度的累计分布for (i = 1; i < 256; i++)acum[i] += acum[i-1];//灰度直方图的均衡化(核心程序部分,请仔细分析)为了方便大家编程实现,这里直接给出了源代码,本实验最核心的部分就在这里//}//对所有的像素灰度值按照均衡化得到的灰度对应规则进行转换,结果存入bitmap[]中//fpnew = fopen(argv[2], "wb+");//由于位图文件的头部信息并没有因直方图均衡化而改变,因此输出图像的头部信息从原位图文件中拷贝即可:fwrite(hdr->signature, 2, 1, fpnew);fwrite(&hdr->size, 4, 1, fpnew);fwrite(hdr->reserved, 4, 1, fpnew);fwrite(&hdr->offset, 4, 1, fpnew);fwrite(&hdr->hdr_size, 4, 1, fpnew);fwrite(&hdr->width, 4, 1, fpnew);fwrite(&hdr->height, 4, 1, fpnew);fwrite(&hdr->nr_planes, 2, 1, fpnew);fwrite(&hdr->bits_per_pixel, 2, 1, fpnew);fwrite(&hdr->compress_type, 4, 1, fpnew);fwrite(&hdr->data_size, 4, 1, fpnew);fwrite(&hdr->resol_hori, 4, 1, fpnew);fwrite(&hdr->resol_vert, 4, 1, fpnew);fwrite(&hdr->nr_colors, 4, 1, fpnew);fwrite(&hdr->important_color, 4, 1, fpnew);if (hdr->offset > 54)fwrite(hdr->info, (hdr->offset - 54), 1, fpnew);////关闭fclose(fpnew);//释放内存(优化程序必需)free(hdr);free(bitmap);return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、沃尔什变换
由于傅里叶变换和余弦变换的变换核由正弦、
余弦函数组成,运算速度受影响。在特定问题 中,往往引进不同的变换方法,以求运算简单 且变换核矩阵产生方便。
沃尔什变换中的变换矩阵简单(只有 1和-1),
占用存储空间少,产生容易,有快速算法,在
需要实时处理大量数据的图像处理问题中,应
用广泛。
离散傅立叶变换
计算机处理傅立叶变换用离散傅立叶变换。
输入/输出数据均为离散,便于计算机处理。 使用离散傅立叶变换,可以使用一种快速算法 (FFT)。
MATLAB提供的函数:FFT、FFT2、FFTn
2、离散余弦变换
傅立叶变换存在一个问题,它的参数均为复数,
数据描述上相当于实数的两倍,数据的计算量比 较大。离散余弦变换较好的解决了这个问题。
newImage2=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm',M10,dctm);
figure; imshow(newImage2);
title('压缩图像 M10');
A=imread('aaa.tif'); I=rgb2gray(A); trueImage=im2double(I); %转换图像矩阵为双精度型 imshow(trueImage); title('原始图像'); dctm=dctmtx(8); %计算离散余弦变换 imageDCT=blkproc(trueImage,[8 8],'P1*x*P2',dctm,dctm.'); %对图像I 的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。 M10=[1 1 1 1 1 1 1 1 11111110 11111100 11111000 11110000 11100000 11000000 1 0 0 0 0 0 0 0]; %二值掩模,用来压缩DCT 的系数
newImage2=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm',M10,dctm);
figure; imshow(newImage2); title('压缩图像 M10');
五、练习
调试参考程序,掌握工具函数的使用方法。
验证图像的傅立叶变换的旋转性质。
B=blkproc(A,'indexed',...)
参数说明:
[m n]:图像以m*n为分块单位,对图像进行处理(如8*8)
Fun:应用此函数对分别对每个m*n分块的像素进行处理
parameter1, parameter2: 要传给fun函数的参数 mborder nborder:对每个m*n块,上下进行mborder个单位的扩 充,左右进行nborder个单位的扩充,扩充的像素值为0,fun函 数对整个扩充后的分块进行处理。 这里:fun='P1*x*P2',fun的参数P1,P2,将T,T'传递给fun的参数, 即:P1=T,P2=T'.
反变换
n 1 1 N 1 N 1 [b ( x )b ( u ) b ( y ) b ( v )] f ( x, y) W (u, v) 1 i ( ni1) i ( ni1) N u 0 v 0 i 1
变换核
1 n1 [bi ( x )b( ni1) (u )bi ( y )b( ni1) ( v )] h( x, y, u, v) 1 N i 1
(方法:对正方形图像进行旋转操作,观察原图的傅 立叶频谱与旋转后的傅立叶频谱的对应关系。)
选取图像,利用余弦变换,观察变换后图像的 变换情
况。
六、实验报告
简述实验目的、原理
选取图像进行图像压缩处理
分析实验结果,比较压缩前后图像的大小
图像离散余弦变换一
对图像进行离散余弦变化,观察其余弦变换系数及余
弦反变换后恢复图像。
图像选取系统提供的cameraman.tif X=imread(‘cameraman.tif’) Imshow(X)
I = imread('cameraman.tif') ; %装入原始图像
subplot(3,1,1); imshow(I); J = dct2(I) ; %对I 进行二维DCT
沃尔什变换式
正变换
n 1 1 N 1 N 1 [b ( x )b ( u ) b ( y ) b ( v )] W (u, v) f ( x, y) 1 i ( ni1) i ( ni1) N x 0 y 0 i 1
变换核
1 n 1 [bi ( x )b( ni1) (u ) bi ( y )b( ni1) ( v )] g ( x, y, u, v) 1 N i 1
1、傅立叶变换
二维离散傅立叶变换
1 F(u, v) = N 1 f ( x, y ) N
f ( x, y )e
x 0 y 0
N 1 N 1
j 2 ( ux vy )/ N
F (u, v)e
x 0 y 0
N 1 N 1
j 2 ( ux vy )/ N
三、实验用函数
二维离散傅立叶变换函数:fft2( ),ifft2( ) 格式:
F=fft2(f)
二维余弦变换函数:dct2( ),idct2( ) 格式:
J=dct2(I)
图像分块处理函数:blkproc( )
调用格式:
B=blkproc(A,[m n],fun, parameter1, parameter2, ...) B=blkproc(A,[m n],[mborder nborder],fun,...)
从上幅图像中可以看到,直流成分主要集中在右上
角,分辨率比较低。通过fftshift函数提供补零和直流成
分显示区域调整后得到调整以后的结果如上图所示。
2、离散余弦变换DCT的MATLAB实现。 一种是基于图像离散余弦变换的算法,这是通过 MATLAB工具箱提供的dct2 函数和idct2函数实现的; 另一种是DCT变换矩阵方法。变换矩阵方法非常适 合做8*8 或16*16 的图像块的DCT 变换,工具箱提供了 dctmtx 函数来计算变换矩阵。
M 1 N 1 2 F(u,v) c(u)c(v) f ( x, y)cos[ (2 x 1)u]cos[ (2 y 1)v] 2N 2M MN x 0 y 0
2 f ( x, y ) MN
M 1 N 1
c(u)c(v) f (u, v)cos[ (2 x 1) x]cos[ (2 y 1) y] 2N 2M u 0 v 0
为零,加上人眼对高频成分的失真不太敏感,所以可 以用更粗的量化。这样起到压缩图像的目的,使传输 的数码率要远远小于实际图像的数码率,接收端通过 反变换得到的恢复图像也不会有明显的改变。
图像压缩主要任务是取不同的DCT系数,观察即满足
不影响图像质量有能达到较大的压缩率。
A=imread('aaa.tif'); I=rgb2gray(A); trueImage=im2double(I); %转换图像矩阵为双精度型 imshow(trueImage); title('原始图像'); dctm=dctmtx(8); %计算离散余弦变换 imageDCT=blkproc(trueImage,[8 8],'P1*x*P2',dctm,dctm.'); %对图像I 的每个不同8*8数据块应用矩阵式’P1*x*P2’进行处理。 M10=[1 1 1 1 0 0 0 0 11100000 11000000 10000000 00000000 00000000 00000000 0 0 0 0 0 0 0 0]; %二值掩模,用来压缩DCT 的系数
实验二
数字图像变换
一、实验目的
了解图像的各种变换方法
运用matlab实现各种变换
二、实验原理
图像变换是将图像从空间变换到变换域,变换
的目的是简化图像的分析与处理。图像变换在
图像增强、图像恢复、图像压缩和图像特征提
取等方面有着十分重要的应用,它是许多图像
处理和分析技术的基础。
图像变换:
傅立叶变换、离散余弦变换、沃尔什变换
subplot(3,1,2); imshow(log(abs(J)),[]); %图像大部分能量集中在左上角处
J (abs (J ) < 10) = 0 ;
%将DCT 变换值小于10的元素设为0 K= idct2 (J ) / 255 ; subplot(3,1,3); imshow(K); %对逆DCT 变换值归一化
%将DCT 变换值小于255的元素设为0 K= idct2 (J ) / 255 ; subplot(1,3,3); imshow(K); %对逆DCT 变换值归一化
图像的离散余弦变换二
由上例我们可以发现离散余弦变换具有很强的“能量
集中”特性,而且能量主地方可在余弦编码中 忽略。
四、实验指导
1、有一矩形函数f(m,n),矩形区域为1,其余为0,对该 矩形作傅立叶变换。
clear; N=100; f=zeros(50,50); f(15:35,23:28)=1; subplot(2,1,1) imshow(f) subplot(2,1,2) F=fft2(f); imshow(log(abs(F)))
处理的方法是,通过对mask矩阵进行变换来实现,即
将mask矩阵左上角置1,其余全部置0。然后通过离散
余弦反变换后,图像得以恢复。
这种处理方法——图像的压缩。