数字图像处理基本操作
数字图像处理实验报告

目录实验一:数字图像的基本处理操作 (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()等函数。
实验一 Matlab语言及数字图像处理基本操作

实验一Matlab语言及数字图像处理基本操作一、实验目的1、学习MATLAB语言的基本用法;2、掌握MATLAB语言中图像数据与信息的读取方法;3、掌握在MATLAB中绘制灰度直方图的方法;4、掌握灰度直方图的均衡化的方法;5、利用基本灰度变换对图像进行增强二.实验环境及开发工具Windws XP、MATALAB7.0三.实验原理及方法1、验证MATLAB中图像数据的读写及显示(1)imreadimread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename 为读取的图像文件(可以加上文件的路径)。
(2)imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map 写入文件filename。
(3)imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。
(4)MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。
需要显示多幅图像时,可以使用figure语句,它的功能就是重新打开一个图像显示窗口。
2、验证图像对比度增强函数Imadjust如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换,,就可以实现这一要求。
数字图像处理实验一图像的基本操作和基本统计指标计算实验报告.doc

实验一图像的基本操作和基本统计指标计算一、实验目的熟悉MATLAB图像处理工具箱,在掌握MATLAB基本操作的基础上,本课程主要依靠图像处理工具箱验证和设计图像处理算法。
对于初学者来说,勤学多练、熟悉MATLAB图像处理工具箱也是学号本课程的必经之路。
了解计算图像的统计指标的方法及其在图像处理中的意义。
了解图像的几何操作,如改变图像大小、剪切、旋转等。
二、实验主要仪器设备(1)台式计算机或笔记本电脑(2)MATLAB(安装了图像处理工具箱,即Image Processing Toolbox(IPT))(3)典型的灰度、彩色图像文件三、实验原理(1)将一幅图像视为一个二维矩阵。
(2)利用MATLAB图像处理工具箱读、写和显示图像文件。
①调用imread函数将图像文件读入图像数组(矩阵)。
例如“I=imread(‘tire.tif’);”。
其基本格式为:“A=imread(‘filename.fmt’)”,其中,A为二维矩阵,filename.为文件名,fmt 为图像文件格式的扩展名。
②调用imwrite函数将图像矩阵写入图像文件。
例如“imwrite(A,’test_image.jpg’);”。
其基本格式为“imwrite(a,filename.fmt)”。
③调用imshow函数显示图像。
例如“imshow(‘tire.tif’);”。
其基本格式为:I为图像矩阵,N为显示的灰度级数,默认时为256。
(3)计算图像有关的统计参数。
四、实验内容(1)利用MATLAB图像处理工具箱和Photoshop读、写和显示图像文件。
(2)利用MATLAB计算图像有关的统计参数。
五、实验步骤(1)利用“读图像文件I/O”函数读入图像Italy.jpg。
(2)利用“读图像文件I/O”的iminfo函数了解图像文件的基本信息:主要包括Filename(文件名)、FileModDate(文件修改时间)、Filesize(文件尺寸)、Format(文件格式)、FormatVersion (格式版本)、Width(图像宽度)、Height(图像高度)、BitDepth(每个像素的位深度)、ColorType (彩色类型)、CodingMethod(编码方法)等。
数字图像处理及应用MATLAB第8章.ppt

(3)imshow 功能:显示图像
格式:imshow(I,n) ;imshow(I,[low high]) ;imshow(BW) %显示黑白图像
imshow(X,map) %显示索引色图像;imshow(RGB) %显示真彩色图像
imshow filename (4)figure
功能:创建图形窗口 (5)subplot
功能:将多个图画到一个平面上的工具。 格式:subplot(m,n,p)或者subplot(mnp) 说明:其中,m表示是图排成m行,n表示图排成n列,也就 是整个figure中有n个图是排成一行的,一共m行。
(a)原始图像 实验结果图
(b) 处理后图像
(4)实现真彩色图像与索引图像的互相转换。
clear,clc close all RGB1 = imread('peppers.png');%读入真彩色图像 [X1,map1] = rgb2ind(RGB1,128);%真彩色图像转化为索引图 imshow(X1,map1) %显示索引图像 load clown;%载入图像 rgb2=ind2rgb(X,map);%将索引图像转化为真彩色图像 figure,imshow(rgb2)
2、实验中所用部分函数介绍
(1)imread 功能:图像文件的读取 格式: A=imread(filename,fmt) 将文件命为filename表示的扩展名为fmt的图像文件读Байду номын сангаас到矩
阵A中。MATLAB支持的图像格式有bmp、jpg或jpeg、tif或tiff、 gif、pcx、png、xwd。 (2)imwrite
数字图像处理的基本方法

一、图像的预处理技术图像处理按输入结果可以分为两类,即输入输出都是一副图像和输入一张图像输出不再是图像的数据。
图像处理是个很广泛的概念,有时候我们仅仅需要对一幅图像做一些简单的处理,即按照我们的需求将它加工称我们想要得效果的图像,比如图像的降噪和增强、灰度变换等等。
更多时候我们想要从一幅图像中获取更高级的结果,比如图像中的目标检测与识别。
如果我们将输出图像中更高级的结果视为目的的话,那么我们可以把输入输出都是一幅图像看作是整个处理流程中的预处理。
下面我们将谈到一些重要的预处理技术。
(一)图像增强与去噪图像的增强是一个主观的结果,原来的图像按照我们的需求被处理成我们想要的效果,比如说模糊、锐化、灰度变换等等。
图像的去噪则是尽可能让图像恢复到被噪声污染前的样子。
衡量标准是可以度量的。
不管是图像的增强与去噪,都是基于滤波操作的。
1.滤波器的设计方法滤波操作是图像处理的一个基本操作,滤波又可分为空间滤波和频域滤波。
空间滤波是用一个空间模板在图像每个像素点处进行卷积,卷积的结果就是滤波后的图像。
频域滤波则是在频率域看待一幅图像,使用快速傅里叶变换将图像变换到频域,得到图像的频谱。
我们可以在频域用函数来保留或减弱/去除相应频率分量,再变换回空间域,得到频域滤波的结果。
而空间滤波和频域滤波有着一定的联系。
频域滤波也可以指导空间模板的设计,卷积定理是二者连接的桥梁。
(1)频域滤波使用二维离散傅里叶变换(DFT )变换到频域:∑∑-=+--==10)//(210),(),(N y N vy M ux i M x e y x f v u F π使用二维离散傅里叶反变换(IDFT )变换到空间域:∑∑-=-=+=1010)//(2),(1),(M u N v N vy M ux i e v u F MN y x f π在实际应用中,由于该过程时间复杂度过高,会使用快速傅里叶变换(FFT )来加速这个过程。
现在我们可以在频域的角度看待这些图像了。
形态学膨胀数学公式

形态学膨胀数学公式
形态学膨胀是数字图像处理中的一种基本操作,它可以用数学
公式来表示。
形态学膨胀的数学公式如下所示:
Dilation(A, B) = {z | ∃b: ((b in B) and (z-b in A))}。
其中,A表示输入图像,B表示结构元素。
结构元素B可以是任
何形状的图像,通常是一个小的二值图像。
膨胀操作的数学公式描
述了在给定结构元素的情况下,输出图像中每个像素点的取值如何
确定。
简单来说,对于输入图像中的每个像素,将结构元素B与其
进行对齐,如果结构元素B中的任何一个像素与输入图像A中的对
应像素相匹配,那么输出图像中对应位置的像素值就为1,否则为0。
这个数学公式描述了形态学膨胀的基本原理,它可以帮助我们
理解膨胀操作是如何在数字图像中进行的。
希望这个回答能够帮助
你理解形态学膨胀的数学公式。
《数字图像处理》实验教案

《数字图像处理》实验教案一、实验目的1. 使学生了解和掌握数字图像处理的基本概念和基本算法。
2. 培养学生运用数字图像处理技术解决实际问题的能力。
3. 提高学生使用相关软件工具进行数字图像处理操作的技能。
二、实验内容1. 图像读取与显示:学习如何使用相关软件工具读取和显示数字图像。
2. 图像基本操作:学习图像的旋转、缩放、翻转等基本操作。
3. 图像滤波:学习使用不同类型的滤波器进行图像去噪和增强。
4. 图像分割:学习利用阈值分割、区域增长等方法对图像进行分割。
5. 图像特征提取:学习提取图像的边缘、角点等特征信息。
三、实验环境1. 操作系统:Windows或Linux。
2. 编程语言:Python或MATLAB。
3. 图像处理软件:OpenCV、ImageJ或MATLAB。
四、实验步骤1. 打开相关软件工具,导入图像。
2. 学习并实践图像的基本操作,如旋转、缩放、翻转等。
3. 学习并实践图像滤波算法,如均值滤波、中值滤波等。
4. 学习并实践图像分割算法,如全局阈值分割、局部阈值分割等。
5. 学习并实践图像特征提取算法,如Canny边缘检测算法等。
五、实验要求1. 每位学生需独立完成实验,并在实验报告中详细描述实验过程和结果。
2. 实验报告需包括实验目的、实验内容、实验步骤、实验结果和实验总结。
3. 实验结果要求清晰显示每个步骤的操作和效果。
4. 实验总结部分需对本次实验的学习内容进行归纳和总结,并提出改进意见。
六、实验注意事项1. 实验前请确保掌握相关软件工具的基本使用方法。
3. 在进行图像操作时,请尽量使用向量或数组进行处理,避免使用低效的循环结构。
4. 实验过程中如需保存中间结果,请使用合适的文件格式,如PNG、JPG等。
5. 请合理安排实验时间,确保实验报告的质量和按时提交。
七、实验评价1. 实验报告的评价:评价学生的实验报告内容是否完整、实验结果是否清晰、实验总结是否到位。
2. 实验操作的评价:评价学生在实验过程中对图像处理算法的理解和运用能力。
考研数字媒体考试题目及答案

考研数字媒体考试题目及答案# 考研数字媒体考试题目及答案## 一、选择题1. 数字媒体技术中,以下哪项不是数字图像处理的基本操作?A. 缩放B. 旋转C. 裁剪D. 色彩调整答案:D2. 在数字音频编辑中,以下哪个术语描述的是音频信号的频率范围?A. 动态范围B. 采样率C. 比特率D. 频率响应答案:D3. 以下哪个软件不是用于视频编辑的?A. Adobe Premiere ProB. Final Cut ProC. PhotoshopD. Avid Media Composer答案:C## 二、简答题1. 简述数字媒体技术在现代广告中的应用。
数字媒体技术在现代广告中的应用非常广泛,它通过数字化手段增强了广告的吸引力和传播效率。
例如,利用3D建模技术可以创建逼真的产品展示,增强消费者的视觉体验;通过视频编辑软件可以制作动态的广告片,吸引观众的注意力;利用社交媒体平台的数字广告可以精准投放,提高广告的转化率。
2. 解释什么是数字水印技术,并简述其在数字媒体保护中的应用。
数字水印技术是一种将特定信息嵌入到数字媒体文件中的方法,这些信息通常不易被察觉,但可以通过特定的算法检测出来。
在数字媒体保护中,数字水印可以用来追踪媒体文件的来源和版权信息,防止未经授权的复制和分发,保护创作者的知识产权。
## 三、论述题1. 论述数字媒体技术对电影产业的影响。
数字媒体技术对电影产业产生了深远的影响。
首先,数字化拍摄技术使得电影制作更加便捷和经济,降低了电影制作的门槛。
其次,数字后期制作技术,如CGI(计算机生成图像)和视觉特效,极大地丰富了电影的表现形式和视觉体验。
此外,数字分发平台的出现,如在线视频点播服务,改变了电影的发行和观看模式,使得观众可以随时随地享受电影内容。
2. 分析数字媒体技术在教育领域的应用及其带来的变革。
数字媒体技术在教育领域的应用极大地提高了教学的互动性和趣味性。
例如,通过多媒体课件,教师可以结合图像、声音和视频等多种媒体形式,使抽象的概念更加直观易懂。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab图像的读取和存储图像的读取I=imread(‘pout.tif’);imread是读取图像的函数。
pout.tif是matlab内置的图像,不管在什么程序内都可以直接读取。
这里我们来说几种常见的情形注:Matlab文件夹内有test.m,1.jpg,image文件夹,同时image文件夹内有2.jpg读取1.jpgI=imread(‘1.jpg’);读取2.jpgI=imread(‘image\2.jpg’);%相对路径的读取读取D:\1023\25\1.jpgI=i mread(‘D:\1023\25\1.jpg’);%绝对路径的读取读取D:\1023\25内20个图像。
for i=1:20I=imread([‘D:\1023\25\’,num2str(i),’.jpg’]);end图像的显示关于这三个函数用法的区别,主要的意思是:imshow显示按照原来的比例,而image会改变原来图像的比例。
imtool,很少用到。
一般用imshow就足够了。
那么什么时候用figure呢?当程序中只显示一幅图像时,直接imshow就可以。
然后当图像多的时候,就需要用到figuure;imshow(I1);figure;imshow(I2);figure;imshow(I3)如果想要在一张图片内,显示好几个图怎么办呢?title显示在图像的上方,起到提示的作用。
I=imread('pout.tif');subplot(221);imshow(I);title('1');subplot(222);imshow(I);title('2');subplot(223);imshow(I);title('3');subplot(224);imshow(I);title('4');其中前面的22代表是2*2的分布,也可以是2*3,3*4等。
按照行来排列,从第一行开始分别为1 2 3 4。
如图所示。
如果没有要求的话,直接用figure。
此时希望图2来显示某个图像,那么figure(2),就指定来显示某个图像。
当然了,如果仅有一个图像显示这样做,那么可能会被覆盖掉,因此,一个程序中的用法一定要统一,并且保证后面的,不要把前面的覆盖掉。
图像的存储imwrite(I,’pout1.jpg’);同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。
同imread imwrite(I,’pout1.jpg’);imwrite(I,’image\pout1.jpg’);imwrite(I,’D:\Matlab\image\pout1.jpg’);imwrite(I,[’image\’,num2str(i),’.jpg’]);%i是变量,需要定义这里的.jpg可以改成.bmp等,想要的格式。
需要注明的是,存储所选择的文件夹,需要已经建立好。
自动建立文件夹需要用mkdir函数。
mkdir(‘D:\image\1’)%绝对路径的建立。
mkdir(‘image\1’);%绝对路径文件夹的建立。
创建之后,在Matlab文件夹内。
这样就能够节省很多的人力。
当文件比较多的情况下,人工去建立的话,还容易出错。
代码:I=imread('pout.tif');figure;subplot(221);imshow(I);title('1');subplot(222);imshow(I);title('2');subplot(223);imshow(I);title('3');subplot(224);imshow(I);title('4');whos;mkdir('image')imwrite(I,'image\pout2.jpg');Matlab图像的叠加将两幅图像比率叠加源函数function [ imout ] = ImageAdd( ima,imb,x,y,rate )%UNTITLED 此处显示有关此函数的摘要% 此处显示详细说明[m,n,g] = size(ima);[a,b,g1] = size(imb);ima = im2double(ima);imb = im2double(imb);imout = zeros(m,n,g);for i = 1:mfor j = 1:nif ( i <= a &&i >= x && j >= y && j<= b)imout(i,j,:) = ((ima(i,j,:)*(100 - rate) + imb(i-x+1,j-y+1,:)*rate))/100;elseimout(i,j,:) = ima(i,j,:);endMatlab图像颜色空间转换程序clearrgb=imread('G:\Learning\MultiMedia\666.jpg');rgb2hsi(rgb);rgb_r=rgb(:,:,1);rgb_g=rgb(:,:,2);rgb_b=rgb(:,:,3);[n, m] = size(rgb);zero=zeros(n,m/3);Y = 0.229 * rgb_r + 0.587 * rgb_g + 0.114 * rgb_b;U = -0.147 * rgb_r - 0.289 * rgb_g + 0.436 * rgb_b;V = 0.615 * rgb_r - 0.515 * rgb_g - 0.100 * rgb_b;I = 0.596 * rgb_r - 0.275 * rgb_g - 0.321 * rgb_b;Q = 0.212 * rgb_r - 0.523 * rgb_g + 0.311 * rgb_b;Cr = 0.5 * rgb_r - 0.4187 * rgb_g - 0.0813 * rgb_b + 128;Cb = -0.1687 * rgb_r - 0.3313 * rgb_g + 0.5 * rgb_b + 128;I = (rgb_r + rgb_g + rgb_b) / 3;R=cat(3,Y,zero,zero);G=cat(3,zero,U,zero);B=cat(3,zero,zero,V);RGB=cat(3, Y, Cr, Cb);%通过修改参数的值可以显示各种颜色空间的效果imshow(RGB);subplot(2,2,1),imshow(R),title('红色分量');subplot(2,2,2),imshow(G),title('绿色分量');subplot(2,2,3),imshow(B),title('蓝色分量');subplot(2,2,4),imshow(RGB);HIS:function hsi=rgb2hsi(rgb)%提取单通道分量rgb=im2double(rgb);r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);%实现转换num=0.5*((r-g)+(r-b));den=sqrt((r-g).^2+(r-b).*(g-b));theta=acos(num./(den+eps));H=theta;H(b>g)=2*pi-H(b>g);H=H/(2*pi);num=min(min(r,g),b);den=r+g+b;den(den==0)=eps;S=1-3.*num./den;H(S==0)=0;I=(r+g+b)/3;hsi=cat(3,H,S,I);imshow(hsi);CMY:function hsi=rgb2CMY(rgb)rgb=im2double(rgb);r=rgb(:,:,1);g=rgb(:,:,2);b=rgb(:,:,3);C = 1 - r;M = 1 - g;Y = 1 - b;CMY=cat(3,C,M,Y);imshow(CMY);实验内容:读入彩色图像,提取其中的R、G、B颜色分量,并展示出来。
我们学习了多种表示图像的颜色空间,请编写程序将图像转换到YUV、YIQ、YCrCb、HIS、CMY 等颜色空间,并展示出来。
颜色空间的转化关系参考以下公式:原始图片三个色调分量YUV 与RGB 之间的转换Y =0.229R +0.587G +0.114BU =-0.147R -0.289G+0.436BV=0.615R -0.515G -0.100BYIQ 与RGB 之间的转换Y =0.299R +0.587G +0.114BI =0.596R -0.275G -0.321BQ=0.212R -0.523G +0.311BYCrCb 与RGB 之间的转换Y = 0.2990R + 0.5870G + 0.1140BCr = 0.5000R - 0.4187G - 0.0813B + 128Cb = -0.1687R - 0.3313G + 0.5000B + 128HSI 与RGB 之间的转换I =(R +G +B )/3H=arccos{ 0.5*((R-G)+(R-B)) / ((R-G)^2 + (R-B)(G-B))^0.5}S=1-[min(R,G,B)/ I ]图像DCT变换(包含三种滤波器的平滑和锐化效果比较)代码global gmain Data;[fname,pname]=uigetfile('*.jpg','打开文件');if fname==0return;end[Data,map]=imread(fname);%读取图像数据%new=rgb2gray(Data);%imwrite(new,'new.bmp','bmp')%Data=im2bw(Data,map,0.6);%im2bw转为二进制阈值0.6%Data=+Data;%逻辑格式转为浮点格式Data=rgb2gray(Data);subplot(1,2,1); %准备显示两幅图像imshow(Data);function DCTcode;global Data;%全局变量,用于共享图像数据[m,n]=size(Data);fid=fopen('dct.bin','w+'); %创建dct.bin用存储DCT和BTC混合编码后的二进制文件。
%补0使尺寸为4的整数倍以便分块m1=4*ceil(m/4);n1=4*ceil(n/4);Datatemp=zeros(m1,n1);Datatemp(1:m,1:n)=Data;%fwrite(fid,m1,'long');fwrite(fid,n1,'long'); %在文件中记录图像大小block=zeros(4,4); % 4X4大小的子带for j=1:4:nfor i=1:4:mfor t=0:1:3for p=0:1:3block(1+t,1+p)=Datatemp(i+t,j+p); %取出4X4数据块endend%对变换后数据进编码后存储或发送,只取其中的2X2数据DctBlock=dct2(block);%存储(发送)编码文件fwrite(fid,DctBlock(1,1),'bit12');%直流分量,用12bit量化fwrite(fid,DctBlock(1,2),'bit9');%用9bit量化非直流分量fwrite(fid,DctBlock(2,1),'bit9');fwrite(fid,DctBlock(2,2),'bit9');endendfclose(fid);function IDctcode;fid=fopen('dct.bin','r');m=fread(fid,1,'long');n=fread(fid,1,'long'); data=zeros(m,n);%用于存放图像数据temp=zeros(4,4);block=zeros(4,4);%读取方块数据for j=1:4:nfor i=1:4:mblock(1,1)=fread(fid,1,'bit12');block(1,2)=fread(fid,1,'bit9');block(2,1)=fread(fid,1,'bit9');block(2,2)=fread(fid,1,'bit9');temp=idct2(block);for t=0:1:3for p=0:1:3Data(i+t,j+p)=temp(1+t,1+p);endendendenddata=uint8(Data);subplot(1,2,2);imshow(data);%显示图像fclose(fid);图像的傅立叶变换读入一幅图像;对图像做FFT。