640x480 の画像がある宿題があり、それを 16x16 ブロックに分割したいと考えています。誰かがそれを行う方法を教えてもらえますか? 可能であれば、ループを避けたいと思います。私は何時間もそれをやろうとしてきましたが、運がありません...
質問する
1639 次
2 に答える
3
Matlab 関数blockprocを使用するのが最善だと思います。本当にブロックを取得したい場合は、matlab コードを掘り下げますが、画像に何らかの処理関数を適用したいと思いますか? 画像圧縮を行いたいとしましょう。その後、パラメーターとして圧縮関数とブロック サイズを指定して blockproc を呼び出します。
ブロックを取得したい場合、または画像処理ツールボックスを利用できない場合は、ここを参照してください。あなたの質問は実際に何度も聞かれています (わざわざ検索したことはありますか??)。
于 2012-06-29T14:44:09.267 に答える
1
これはおそらくベストプラクティスではありませんが、必要に応じて実行できます。40 x 30 になる結果の 2-D マトリックスから各 16x16 ブロックを呼び出すことができます。
注: これは入力したコードにすぎません。自分でテストしたことはありません。
それをセル配列に解析したい場合は、次のようにすることができます。
%Original Image
Image = imread(somefilename);
%Block size desired (16x16)
bsize = 16;
% 40 and 30 come from dividing the 640 and 480 by 16 since you want 16x16 blocks.
% result = mat2cell(Y, bsize*ones(1,40), bsize*ones(1,30))
result = mat2cell(Y, bsize*ones(1,size(Image,1)/bsize), bsize*ones(1,size(Image,1)/bsize));
于 2012-06-29T14:49:55.143 に答える