2011-06-23 14 views
0

PGMイメージをオーバーラップするブロックに分割し、すべてのブロックに対してDCT変換を行いたいとします。次に、各DCT行列の最初の列を取り出し、それらをすべて新しい行列に入れたいと思います。イメージをオーバーラップするブロックに分割する方法

投稿の回答を読んでいます。How to partition an image to 64 block in matlabですが、正しく動作しているかどうかはわかりません。 blockproc機能を使用してブロックをオーバーラップさせることはできますか?どうすればそれを使用することができますか?

forループの回答が好きです。

答えて

2
I=im2double(rgb2gray(imread('yourimage.png'))); %select channels separation 

%%%for non-overlapping blocks 

fun = @(block_struct) dct2(block_struct.data); 

imageY =(blockproc(I,[8 8],fun)); 

BY=im2col(imageY,[8 8],'distinct'); 

FinalOP=BY(1:8,:); 

%dct-8x8 ,if you want u can choose [64 64]. 
%you need the first column of dct?.so ,i.e 8 values of dct in this case. 

重複ブロックの場合:'sliding'を使用しますが、メモリに問題が発生します。 あなた自身のforループを使用する必要があります。

+0

なぜコードブロックにテキストがありますか? – Ren

関連する問題