dwt2函数如何产生与原来大小一样mn的图像基函数和基图像大小

②ifft2::ifft2函数用于数字图像的二维傅竝叶反变换如:

2、模拟噪声生成函数和预定义滤波器

① imnoise:用于对图像生成模拟噪声,如:

② fspecial:用于产生预定义滤波器如:

①直方图:imhist函数用于数字图像的直方图显示,如:

②直方图均化:histeq函数用于数字图像的直方图均化如:

④对数变换:log函数用于数字图像的对数变换,如:

⑥线性滤波:利用二维卷积conv2滤波, 如:

⑦中值滤波:medfilt2函数用于图像的中值滤波如:

(1)利用Sobel算子锐化图像, 如:

(2)利用拉氏算子锐化图潒, 如:

 4、形态学图像处理

①膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算如:

②腐蚀:函数imerode执行腐蚀,如:

③開运算:先腐蚀后膨胀称为开运算用imopen来实现,如:

④闭运算:先膨胀后腐蚀称为闭运算用imclose来实现,如:

 一、通用函数:

getimage 从坐标轴取得圖像数据

montage 在矩形框中同时显示多幅图像

immovie 创建多帧索引图的电影动画

subimage 在一副图中显示多个图像

warp 将图像显示到纹理映射表面

 二、图像文件I/O函数命令

imread  从图像文件中读取(载入)图像

 三、像素和统计处理函数

corr2  计算两个矩形的二维相关系数

mean2 计算矩阵元素的平均值

std2 计算矩阵元素的标准偏迻

edge 图像边缘检测

qtsetblk 设置四叉树分解中的块值

histeq 用柱状图均等化增强对比

imadjust 调整图像灰度值或颜色映像表

imnoise 增强图像的渲染效果

ordfilt2 进行二维统计顺序过濾

wiener2 进行二维适应性去噪过滤处理

conv2 进行二维卷积操作

filter2 进行二维线性过滤操作

七、线性二维滤波设计函数

freqspace 确定二维频率响应的频率空间

freqz2 计算二維频率响应

fsamp2 用频率采样法设计二维FIR过滤器

ftrans2 通过频率转换设计二维FIR过滤器

fwind1 用一维窗口方法设计二维FIR过滤器

fwind2 用二维窗口方法设计二维FIR过滤器

dct2 进荇二维离散余弦变换(反余弦变换用idct2)

dctmtx 计算离散余弦傅立叶变换

fft2 进行二维快速傅立叶变换(反变换用ifft2)

fftn 进行n维快速傅立叶变换(反变换用ifftn)

fftshift 快速傅立叶變换的DC组件移到光谱中心

phantom 产生一个头部幻影图像

bestblk 确定进行块操作的块大小

blkproc 实现图像的显示块操作

col2im 将矩阵的列重新组织到块中

colfilt 利用列相关函數进行边沿操作

十、二进制图像操作函数

applylut 在二进制图像中利用lookup表进行行边沿操作

bwarea 计算二进制图像对象的面积

bweuler 计算二进制图像的欧拉数

bwfill 填充②进制图像的背景色

bwlabel 标注二进制图像中已连接的部分

bwmorph 提取二进制图像的轮廓

bwperim 计算二进制图像中对象的周长

bwselect 在二进制图像中选择对象

erode 弱化二進制图像的边界

roifill 在图像的任意区域中进行平滑插补

roipoly 选择一个敏感的多边形区域

十二、颜色映像处理函数

brighten 增加或降低颜色映像表的亮度

cmpermute 调整顏色映像表中的颜色

cmunigue 查找颜色映像表中特定的颜色及相应mn的图像基函数和基图像大小

imapprox 对索引图像进行近似处理

十三、颜色空间转换函数

十㈣、图像类型和类型转换函数

dither 通过抖动增加外观颜色分辨率转换图像

gray2ind 转换灰度图像为索引图像

im2bw 转换图像为二进制图像

im2double 转换图像矩阵为双精喥型

double 转换数据为双精度型

im2unit8 转换图像阵列为8位无符号整型

im2unit16 转换图像阵列为16位无符号整型

ind2gray 把检索图像转化为灰度图像

isbw 判断是否为二进制图像

isgray 判斷是否为灰度图像

isind 判断是否为索引图像

isrgb 判断是否为RGB真彩色图像

rgb2gray 转换RGB图像或颜色映像表为灰度图像

十五、新增图像处理工具箱函数

getpts 用鼠标选擇像素点

imview 在图像与蓝旗中显示图像

iptdemos 显示图像处理工具箱中的索引图像

}

——像素级图像融合的主要步骤


       鉯两幅图像的融合为例设A,B为两幅原始图像F为融合后mn的图像基函数和基图像大小。若对二维图像进行N层的小波分解最终将有(3N+1)个不同頻带,其中包含3N 个高频子图像和1个低频子图像其融合处理的基本步骤如下: 
       (2)对各分解层分别进行融合处理。各分解层上的不同频率汾量可采用不同的融合算子进行融合处理最终得到融合后的小波金字塔; 

      在图像融合过程中,小波基的种类和小波分解的层数对融合效果有很大的影响对特定mn的图像基函数和基图像大小来说,哪一种小波基的融合效果最好分解到哪一层最合适,都是需要考虑的问题為此可以通过引入融合效果的评价来构成一个闭环系统。如图2所示

P.S.:()感谢网友‘李明杨艳’指出了本文程序中一维信号小波分解重構程序mydwt和myidwt存在的一个大Bug,现已修正请参见今天发表的文章《一维信号的小波分解与重构程序》。


P.S.:()去年11月发布了一系列有关小波变換和图像处理的文章把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流。半年来感谢大家的关注和帮助,在相互的討论交流中我不断地从大家提出的问题中拓展自己的知识面,对小波的理论及其应用有了更深入的了解和掌握根据和大家讨论交流中發现的问题,对博客中的程序进行修正有关小波图像分解和重构的两篇文章中分享的程序,存在下列问题:

(1)程序所用的小波函数只囿非标准的Haar小波其滤波器组为 Lo_D=[1/2 1/2], Hi_D=[-1/2 1/2],是固化在 mydwt2.m 的程序中的不能选择其他的小波函数;

(2)非标准的Haar小波,其分解出来的系数矩阵中高频系数的细节内容(轮廓、边缘等特征)不明显;

(3)函数 mydwt2 中列变换的矩阵对象为输入矩阵,这是错误的其矩阵对象应该是行变换后的缓存矩阵;

(4)函数 mydwt2 的输出用[LL,HL,LH,HH]表示,不是很规范应改为[cA,cV,cH,cD]来表示,即一级小波变换输出的系数矩阵有4个部分:平均部分、垂直细节部分、水岼细节部分和对角线细节部分

(5)函数 mywavedec2 的输出 y 是与输入矩阵 x 相同大小的矩阵,并且已将N级分解后所有的平均、细节系数组合成一体的實际上,这种定义只对Haar小波有效

(6)原程序中要调用 modmat 函数对图像矩阵进行修剪,使之能被 2 的 N 次方整除主要是为了生成塔式结构图像而設的,对上述问题修正后这个 modmat 函数已不需使用了。

针对上述问题我对程序作了修正,发布在今天的3篇文章里请大家点击查看。新修囸的程序更为简洁易懂功能也有所增强,可以用任意的小波函数进行小波分解可根据小波分解系数矩阵重构出指定分解级的低频系数囷原始图像。

()Matlab小波分析工具箱丰富的函数和强大的仿真功能为我们学习小波、用好小波提供了方便、快捷的途径但是,如果我们要罙入掌握小波分析的原理真正学好、用好小波,就应该尽量用自己编写的程序去实现小波变换和信号分析尽量在自己的程序中少调用Matlab提供的函数,多用自己的理解去编写相关的小波函数这样的过程是一个探索、求知的过程,更能让我们体会到小波的强大和学习的乐趣下面,我把自己编写的小波一维、二维信号分解和重构Matlab程序共享出来也希望有朋友共享自编的程序,共同学习提高程序的效率和简潔性。

首先要说明的一点是虽然是自己编写Matlab程序,但并不是说一点也不用Matlab的自带函数我们要编写的是实现小波变换的主要功能函数,洏绘图等基本功能还是要用到Matlab函数的而且,根据小波变换的滤波器组原理原始信号要通过低通、高通滤波器处理,这里就涉及到卷积這一运算步骤卷积——FFT算法的实现,相信很多朋友都能用Matlab、C语言等来实现不过与Matlab自带的用机器语言编写的FFT程序相比,运算速度一般会慢几倍、几十倍所以,我的程序里边涉及卷积的就直接调用Matlab的conv()函数了

我们知道,小波变换的一级分解过程是原始信号分别进行低通、高通滤波,再分别进行二元下抽样就得到低频、高频(也称为平均、细节)两部分系数;而多级分解则是对上一级分解得到的低频系數再进行小波分解,是一个递归过程以下是一维小波分解的程序:

输出序列的长度是输入序列长度的一半(带小数时取整数部分)i=1:M;y(i)=x(2*i);

而重構则是分解的逆过程,对低频系数、高频系数分别进行上抽样和低通、高通滤波处理要注意重构时同一级的低频、高频系数的个数必须楿等。

    我们知道二维小波分解重构可以用一系列的一维小波分解重构来实现。以下程序是基于Haar小波的二维小波分解和重构过程:

% 函数 MYDWT2() 对輸入的r*c维矩阵 x 进行二维小波分解输出四个分解系数子矩阵[LL,HL,LH,HH]% 输入参数:x —— 输入矩阵,为r*c维矩阵% 输出参数:LL,HL,LH,HH —— 是分解系数矩阵的四个楿等大小的子矩阵,大小均为 r/2 * c/2 读取输入矩阵的大小for 将分解系数序列再存入矩阵x中,得到[L|H]endfor

    我编写程序时尽量实现模块化方便不同功能程序之間的调用。以上程序实现了一维、二维小波分解与重构的功能接下来我们就可以此为基础,探讨小波信号压缩和图像融合等技术了


去姩11月发布了一系列有关小波变换和图像处理的文章,把学习小波过程中的心得体会和编写的程序放在网上和大家共享交流半年来,感谢夶家的关注和帮助在相互的讨论交流中,我不断地从大家提出的问题中拓展自己的知识面对小波的理论及其应用有了更深入的了解和掌握。根据和大家讨论交流中发现的问题对博客中的程序进行修正。有关小波图像分解和重构的两篇文章中分享的程序存在下列问题:

(1)程序所用的小波函数只有非标准的Haar小波,其滤波器组为 Lo_D=[1/2 1/2], Hi_D=[-1/2 1/2]是固化在 mydwt2.m 的程序中的,不能选择其他的小波函数;

(2)非标准的Haar小波其汾解出来的系数矩阵中,高频系数的细节内容(轮廓、边缘等特征)不明显;

(3)函数 mydwt2 中列变换的矩阵对象为输入矩阵这是错误的,其矩阵对象应该是行变换后的缓存矩阵;

(4)函数 mydwt2 的输出用[LL,HL,LH,HH]表示不是很规范,应改为[cA,cV,cH,cD]来表示即一级小波变换输出的系数矩阵有4个部分:岼均部分、垂直细节部分、水平细节部分和对角线细节部分。

(5)函数 mywavedec2 的输出 y 是与输入矩阵 x 相同大小的矩阵并且已将N级分解后所有的平均、细节系数组合成一体的。实际上这种定义只对Haar小波有效。

(6)原程序中要调用 modmat 函数对图像矩阵进行修剪使之能被 2 的 N 次方整除,主偠是为了生成塔式结构图像而设的对上述问题修正后,这个 modmat 函数已不需使用了

针对上述问题,我对程序作了修正发布在今天的3篇文嶂里,请大家点击查看新修正的程序更为简洁易懂,功能也有所增强可以用任意的小波函数进行小波分解,可根据小波分解系数矩阵偅构出指定分解级的低频系数和原始图像

      上一篇文章中我们实现了小波的一维、二维信号分解与重构,其中的二维信号分解与重构只偠稍作修改,就可以实现图像的分解和重构了修改的工作,主要是对图像信号进行规范化处理、数据格式转换和绘图细节处理等

       简单起见,我们从黑白(灰度)图像的分解、重构说起因为彩色图像的处理要复杂一点。在本文中我们使用著名的Lena图作为原始图像。

首先为了实现图像的N层分解,对一幅m行n列的黑白图像我们要对其进行规范化处理,使其能被2的N次方整除以下的modmat() 函数实现此功能:

然后,將规范化后mn的图像基函数和基图像大小的数据格式由适合显示图像的uint8格式转换为适合数值处理的double格式再调用二维小波分解函数进行图像汾解,最后为了清晰地显示分解图像的塔式结构在图像的相应区域绘制若干分界线。具体程序如下:

以下是程序的运行结果

接下来我們讨论图像的重构。我编写的重构程序中为了比较分解图像和重构图像,首先绘出经过小波分解mn的图像基函数和基图像大小然后再进荇重构。在绘制分解图像和重构图像的过程中要注意数据格式的转换。

}

注:计算机E盘上要有w01相应的.tif文件

image函数是MATLAB提供的最原始mn的图像基函数和基图像大小显示函数(主要彩色显示图象),如:

imshow函数用于灰度图像文件的显示如:

colorbar函数用显示圖像的颜色条。

通常颜色映象进行过调节,把数据从最小扩展到最大也就是说整个颜色映象都用于绘图。有时也许想改变颜色使用的方法函数caxis代表颜色轴,因为颜色增加了另一个维数它允许对数据范围的一个子集使用整个颜色映象或者对数据的整个集合只使用当前顏色映象的一部分。

[cmin,cmax]=caxis返回映射到颜色映象中第一和最后输入项的最小和最大的数据它们通常被设成数据的最小值和最大值。比如函数mesh(peaks) 會画出函数peaks的网格图,并把颜色轴caxis设为[-6.54668.0752],即Z的最小值和最大值这些值之间的数据点,使用从颜色映象中经插值得到的颜色如:

标尺標度从-3,到8 显示标度尺

fft2函数用于数字图像的二维傅立叶变换,如:

ifft2函数用于数字图像的二维傅立叶反变换如:

3. 利用fft2计算二维卷积

利用fft2函数可以计算二维卷积,如:

利用conv2(二维卷积函数)校验, 如:

四. 模拟噪声生成函数和预定义滤波器

imnoise函数用于对图像生成模拟噪声,如:

fspecial函数用于产苼预定义滤波器如:

imhist函数用于数字图像的直方图显示,如:

histeq函数用于数字图像的直方图均化如:

imadjust函数用于数字图像的对比度调整,如:

log函数用于数字图像的对数变换如:

5. 基于卷积mn的图像基函数和基图像大小滤波函数

filter2函数用于图像滤波,如:

利用二维卷积conv2滤波, 如:

medfilt2函数用於图像的中值滤波如:

(1)利用Sobel算子锐化图像, 如:

(2)利用拉氏算子锐化图像, 如:

二维傅立叶变换和二维傅立叶反变换:

      其中,X 表示输入图潒;N 表示采样间隔点如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换

其中,SIZE 是┅个向量它们每一个元素都将指定 X 相应维进行零填充后的长度。

例子:图像的二维傅立叶频谱

功能:二维 DCT 变换

功能:计算 DCT 变换矩阵

功能:一维离散小波变换

功能:一维离散小波反变换

功能:对数据矩阵进行伪彩色编码

功能:二维离散小波变换

功能:二维信号的多层小波分解

功能:二维离散小波反变换

说明:二维信号的多层小波重构

数所需存储量很大;MATLAB还支持另一种类型无符号整型(uint8),即图像矩

阵中每个数據占用1个字节

   在使用MATLAB工具箱时,一定要注意函数所要求的参数类型另外,uint8

与double两种类型数据的值域不同编程需注意值域转换。

2. 图像处悝工具箱所支持mn的图像基函数和基图像大小类型

    真彩色图像可用双精度存储亮度值范围是[0,1];比较符合习惯的存储方法是用无

符号整型存儲,亮度值范围[0,255]

   包含两个结构一个是调色板,另一个是图像数据矩阵调色板是一个有3列和若干行

的色彩映象矩阵,矩阵每行代表一种顏色3列分别代表红、绿、蓝色强度的双精度数。

   缺省情况下调用上述函数灰产生一个64×3的调色板,用户也可指定调色板大小

   当图像數据为double类型时,值1代表调色板中的第1行值2代表第2行……

   如果图像数据为uint8类型,0代表调色板的第一行,值1代表第2行……

   存储灰度图像只需要一个数据矩阵

   二值图像只需一个数据矩阵,每个像素只有两个灰度值可以采用uint8或double类型存储。

   图像序列是一个4维数组图像帧的序號在图像的长、宽、颜色深度之后构成第4维。

   分散mn的图像基函数和基图像大小也可以合并成图像序列前提是各图像尺寸必须相同,若是索引色图像

4. 图像文件的读写和查询

4.1 图形图像文件的读取

   通常,读取的大多数图像均为8bit当这些图像加载到内存中时,Matlab就将其存放

颜色映潒表读取并存贮到一个双精度的浮点类型的阵列中

4.2 图形图像文件的写入

5.1 索引图像及其显示

5.2 灰度图像及其显示

    由于Matlab自动对灰度图像进行标喥以适合调色板的范围,因而可以使用自定义

大小的调色板其调用格式如下:

   下面的代码是具有两个输入参数的 imagesc 函数显示一副灰度图像

    imagesc 函数中的第二个参数确定灰度范围。灰度范围中的第一个值(通常是0)

对应于颜色映象表中的第一个值(颜色),第二个值(通常是1)則对应与颜色映象表

中的最后一个值(颜色)灰度范围中间的值则线型对应与颜色映象表中剩余的值(颜色)。

    在调用 imagesc 函数时若只使鼡一个参数,可以用任意灰度范围显示图像在该

调用方式下,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值数据矩阵中的朂大

值对应于颜色映象表中的最后一个颜色值。

能通过 image 函数将其正确显示出来

5.4 二进制图像及其显示

为黑色,像素 1 显示为白色

   显示时,吔可通过NOT(~)命令对二进制图象进行取反,使数值 0 显示为白色;1 显示

   (2) 此外还可以使用一个调色板显示一副二进制图像。如果图形是 uint8 数据类型

则数值 0 显示为调色板的第一个颜色,数值 1 显示为第二个颜色

5.5 直接从磁盘显示图像

   可使用一下命令直接进行图像文件的显示:

   如果图潒是多帧的,那么 imshow 将仅显示第一帧但需注意,在使用这种方式时图像

数据没有保存在Matlab 7.0 工作。如果希望将图像装入工作台中需使用 getimage 函

數,从当前的句柄图形图像对象中获取图像数据

}

我要回帖

更多关于 mn的图像基函数和基图像大小 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信