实验一图像变换实验一、实验目的: 图像列阵在空域中分析运算量很大,计算上费时、费力,采用图像变换,将空域的图像在频域中表示,使对图像各种处理变得简单。二、实验原理: 二维离散 walsh 变换公式: 式中:u,x=0, 1,2,…,M-1 ;v,y=0, 1,2,…,N-1 ; x,y为时域变量, u,v为频域变量。二维离散沃尔什变换公式: 三、实验内容: 用C语言、 Visual C++ 或Matlab 对简单的灰度图像进行离散傅里叶变化或沃尔什变化。图像矩阵为: 沃尔什变换,其二维 WHT 变换核为: 四、实验程序: MATLAB 实现结果: C语言编写算法如下: #include<> main() {int f[4][4]={1,3,3,1,1,3,3,1,1,3,3,1,1,3,3,1}; int h[4][4]={1,1,1,1,1,-1,1,-1,1,1,-1,-1,1,-1,-1,1}; int w0[4][4];int w[4][4]; int u,v,N,i; N=4; for(u=0;u<N;u++) for(v=0;v<N;v++) {w0[u][v]=0;w[u][v]=0; }for(u=0;u<N;u++) for(v=0;v<N;v++) for(i=0;i<N;i++) w0[u][v]+=h[u][i]*f[i][v]; for(u=0;u<N;u++) for(v=0;v<N;v++) for(i=0;i<N;i++) w[u][v]+=w0[u][i]*h[i][v]; printf("walsh 变换得到的结果是:"); for(u=0;u<N;u++) {printf("\n"); for(v=0;v<N;v++) printf("%4d",w[u][v]/16);} printf("\n"); }五、实验结果: 六、实验总结: 图像列阵在空域中分析运算量很大,将空域的图像在频域中表示,使对图像各种处理变得简单,通过此实验我学会了将空域的图像在频域中表示的简单方法。实验二图像编码实验哈夫曼编码一、实验目的: 利用哈夫曼编码算法原理,对信源符号编码,提高图像的编码效率。二、实验原理: 信源符号分布概率是随机的。出现概率大的字符用较短的码字表示,出现概率小的字符用较长的码字表示,这样分配码字能够减少信息的表示空间。三、实验内容; 设一幅灰度级为 8(分别用 S0、S1、S2、S3、S4、S5、S6、S7表示)的图像中, 各灰度所对应的概率分别为 、 、 、 、 、 、 、 。现对其进行哈夫曼编码,具体步骤如下: 蕌 , 选出最小的两个概率( ), 相加得 ,与其他概率组成新的概率集合{ , , , , , ,} 。 ,选出最小的两个概率( ), ,组成新的概率集合{ , , , , ,} 。蕌 ,选出最小的两个概率( ), ,组成新的概率集合{ , , , ,} 。蕌 ,选出最小的两个概率( ), ,组成新的概率集合{ , , ,} 。蕌 ,选出最小的两个概率( ), ,组成新的概率集合{ , ,} 。 ,选出最小的两个概率( ), ,组成新的概率集合{ ,} 。蕌 ( )相加和为 1。 。从最后一步反向进行,首先给最后相加的两个概率( 和 )分配码字,由于 大于 ,于是给 赋“0”,给 0 赋“1”。如此依次给每次相加的两个概率分配码字。蕌 。以符号 S1(对应的概率为 )为例, 在从 的路径上,它所遇到的赋值(“0”或“1”)依次为 1、 0、0,将其反向排列成“001 ”,于是就形成了符号 S1的哈夫曼码字“001 ”。四、实验程序: clear all; I=[3,1,3,2,4,3,2,1]; len=length(I); t=2; bia
数字图形 来自淘豆网m.daumloan.com转载请标明出处.