BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #5259同步于 2009/4/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

请教一个关于DCT变换算法的问题

bellring
2009/4/25镜像同步12 回复
JPEG图像压缩算法: 输入图像被分成8*8或16*16的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输; JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。 DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。 实例程序: function Jpeg I=imread('D:\MATLAB7\toolbox\images\imdemos\cameraman.tif'); %该图片在安装matlab的目录中找,原图为灰度图象 I=im2double(I);%图像存储类型转换 T=dctmtx(8);%离散余弦变换矩阵 B=blkproc(I,[8 8],'P1*x*P2',T,T'); %对原图像进行DCT变换 mask=[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]; B2=blkproc(B,[8 8],'P1.*x',mask); %数据压缩,丢弃右下角高频数据 I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %进行DCT反变换,得到压缩后的图像 imshow(I) title('原始图像') figure; imshow(I2) title('压缩后的图像') 这句B=blkproc(I,[8 8],'P1*x*P2',T,T'); 中的'P1*x*P2',T,T'分别是什么意思啊? 我想得到DCT系数的值该怎样编写程序呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
QuestionMark机器人#1 · 2009/4/25
'P1*x*P2',T,T'应该是fun的定义 'P1*x*P2' 就是2D DCT的表达式,其中P1就是T,P2就是T',x就是一个8x8的图像块。 ps:我喜欢这样问问题的方式
bellring机器人#2 · 2009/4/26
我明白了,谢谢你。 我是MATLAB初学者,现在用到图像处理方面的必须得学。 还想请教一个问题:“DCT系数的直方图”是啥意思?运用上面程序直接得到压缩后的图像,我用imhist(I)和imhist(I2)得到图像直方图,imhist(I2)是压缩后的图像直方图,那DCT系数的直方图怎么得到呢?
QuestionMark机器人#3 · 2009/4/26
imhist(B)和imhist(B2)也许是你想要的
bellring机器人#4 · 2009/4/27
我今天试了imhist(B)和imhist(B2),有点问题,反而hist(B)和hist(B2)出来的柱状图很对,还没整明白原因。 下一步是求DCT系数直方图的功率谱,用FFT咋求功率谱,有例子程序吗?
QuestionMark机器人#5 · 2009/4/27
统计直方图的自相关函数 然后fft就是功率谱了呀
bellring机器人#6 · 2009/5/1
我需要编的程序主要分一下几步: (1)计算JPEG图像每个8x8图像块的DCT系数 (2)DCT系数直方图 (3)DCT系数直方图的功率谱P (4)P的二阶导数 (5)对P的二阶导数低通滤波,得出最终图形 感觉不难,但我初学MATLAB,做起来还是有许多问题,每步的图形都和答案有出入。我觉得可能是函数不对。您可以帮我指点一下吗?最好写个程序给我看看。谢了!
QuestionMark机器人#7 · 2009/5/1
水平有限。。。其实我都不懂你要做啥 弱弱的问下 dct系数的功率谱2阶导数有什么特性?能反映图像的什么特征? 求出来要干啥呀
bellring机器人#8 · 2009/5/2
是一个检验图像真实性的算法,对P的二阶导数低通滤波,得出最终图形,数出这个图形的峰值个数,以便进行下一步计算和编程。 上面是所需编程的一部分。 您知道求dct系数的功率谱的二阶导数用什么函数吗?
QuestionMark机器人#9 · 2009/5/2
应该没有直接求这么复杂过程的函数 你不是已经求到直方图了 对直方图的每个bin遍历(用自相关函数定义式做统计),求出自相关函数,然后再fft就是功率谱了呀