求助,如何对RGB彩色图象进行DCT分8*8子块变换
<P>function MSE=dct2(check,trueImage,Cnum)<BR>%trueImage为待压缩的原图像,Cnum为压缩时保留的系数个数<BR>%check<1×6>为checkbox的选项数据,控制输出<BR>h = waitbar(0,'Please wait...'); %等待条<BR> for i=1:100,<BR> waitbar(i/100,h)<BR> end<BR> close(h)<BR>file=trueImage;</P><P>trueImage=imread(trueImage);<BR>trueImage1=trueImage;<BR>if jpgread(file)==0 %导入jpgread函数,判断是否为彩色图像<BR>trueImage1=rgb2gray(trueImage); %如果是彩色图像转成灰度的<BR>end<BR>trueImage=double(trueImage1)/255;<BR>dctm=dctmtx(8);<BR>%进行基于子块的DCT变换<BR>imageDCT=blkproc(trueImage,,'P1*x*P2',dctm,dctm.');<BR>DCTvar=im2col(imageDCT,,'distinct').';<BR>n=size(DCTvar,1);<BR>DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;<BR>=sort(DCTvar);<BR>Cnum=64-Cnum;<BR>mask=ones(8,8); <BR>mask(order(1:Cnum))=zeros(1,Cnum);<BR>im8x8=zeros(9,9);<BR>im8x8(1:8,1:8)=mask;<BR>im128x128=kron(im8x8(1:8,1:8),ones(16));<BR>if check(2)==1<BR>figure('name','DCT系数');<BR>imshow(im128x128);<BR>title('DCT系数');<BR>end<BR>if check(3)==1<BR>figure('name','8*8DCT变换系数图'); <BR>mesh(imageDCT); <BR>title('8*8DCT变换系数图');<BR>end<BR>dctm=dctmtx(8);<BR>newImage=blkproc(imageDCT,,'P1*(x.*P2)*P3',dctm.',mask(1:8,1:8),dctm);<BR>if check(5)==1<BR>figure('name','重构图像对比');<BR>subplot(1,2,1);<BR>imshow(trueImage1);<BR>title('原始图像');<BR>subplot(1,2,2);<BR> imshow(newImage);<BR>title('重构图像');<BR>end<BR>if check(6)==1<BR>figure('name','误差图像');<BR>imshow(trueImage-newImage+0.45); %对误差图像曾亮显示<BR>title('误差图像');<BR>end<BR>error=(trueImage-newImage).^2; %均方误差计算<BR>A=sum(error(:));<BR>B=prod(size(trueImage));<BR>MSE=A/B;<BR>这是灰度变换,彩色变换如何修改,请HAPPY教授指点,谢谢</P> 顶一下,各位大人帮忙看一下,谢谢
回复:(EMMA8459)顶一下,各位大人帮忙看一下,谢谢
有谁懂吗,帮忙指点一下好吗,谢谢,,真的很急回复:(EMMA8459)求助,如何对RGB彩色图象进行DCT分8...
分别取RGB三色分量进行变换,然后再合成不行吗回复:(suffer)回复:(EMMA8459)求助,如何对RGB彩...
我知道如何提取RGB分量。可是如果继续运用下面的程序,做出来好象还是灰度的啊回复:(EMMA8459)求助,如何对RGB彩色图象进行DCT分8...
<P>看看 H.264 原代码</P>回复:(qiuqia17)回复:(EMMA8459)求助,如何对RGB...
<DIV class=quote><B>以下是引用<I>qiuqia17</I>在2006-5-18 12:03:44的发言:</B><BR><P>看看 H.264 原代码</P></DIV>
<br>H.264有matlab源代码吗?
回复:(happy)回复:(qiuqia17)回复:(EMMA8459)...
<P>教授,H,264好象原代码都是C语言啊</P> 首先将两个图像分为<FONT face="宋体, MS Song">8</FONT>×<FONT face="宋体, MS Song">8 </FONT>块,然后再对每个块进行二维<FONT face="宋体, MS Song">DCT </FONT>变换。matlan 程序怎么实现的!帮帮我吧 !马上就要答辩拉 首先将两个图像分为<FONT face="宋体, MS Song">8</FONT>×<FONT face="宋体, MS Song">8 </FONT>块,然后再对每个块进行二维<FONT face="宋体, MS Song">DCT </FONT>变换。matlab 程序怎么实现的!帮帮我吧 !马上就要答辩拉<BR>回复:(suffer)回复:(EMMA8459)求助,如何对RGB彩...
能不能具体的分析一下程序啊回复:(EMMA8459)求助,如何对RGB彩色图象进行DCT分8...
只要分别对<BR>I(:,:,1)<BR>I(:,:,2)<BR>I(:,:,3)<BR>作上述变换就行了<BR>变换再合成<BR><BR>matlab不是自带dct2吗?干吗还写上面这个程序?回复:(happy)回复:(EMMA8459)求助,如何对RGB彩色...
谢谢教授,因为要丢弃部分DCT系数,所以要分块,合成只要把三个矩阵相加吗回复:(EMMA8459)求助,如何对RGB彩色图象进行DCT分8...
不是相加是把二维矩阵和成为三位彩色图片矩阵<BR><BR>比如分析完后分别为I1,I2,I3<BR>J(:,:1)=I1;<BR>J(:,:2)=I2;<BR>J(:,:3)=I3;回复:(happy)回复:(EMMA8459)求助,如何对RGB彩色...
明白了,非常感谢
页:
[1]