matlabにおける画像圧縮には2つの方式(DCT方式とランレングス符号化圧縮方式)があります。

DCT (離散コサイン変換) 圧縮方法は、現代で最も高度な画像圧縮符号化方法の 1 つです。多くの情報を検索し、コードのいくつかの部分を読んだ後、MATLAB での DCT の使用についての私の理解を話します。

DCT は 8*8 の小さなマトリックス ブロックを使用してグレースケール画像を多数の小さなブロックに分割するものですが、もちろん 8*8 の小さなモジュールに分割する必要はなく、全体として DCT に変換することもできます。画像を取得します。これは圧縮されており、8*8 モジュールを使用して分割します。数学によれば、8*8 を使用して分割し、残りの部分を残さない場合、画像は次の倍数でなければならないことがわかります。 8、つまり、最初のステップを読み取ります。画像が完成したら、それをグレースケール画像に変換し、グレースケール画像の行と列を読み取り、行と列を 8 の倍数に変換して、完全に分離できるようにします。その後、システムに付属する DCT 変換関数を使用することもできますし、自分で記述することもできます (自分で記述するということは、8*8 の小さな行列をすべて for ループで変換することを意味します)。

picture2=zeros(x,y);
for i=1:8:x
    for j=1:8:y
        transition1=picture1(i:i+7,j:j+7);
        transition2=dct2(transition1);
        picture2(i:i+7,j:j+7)=transition2;
    end
end

次に、全体の DCT 係数を取得します。次のステップは、DCT を逆変換します。自分で記述する場合は、for ループにも記述します。逆変換後、圧縮された画像を取得します。

ランレングス符号化圧縮方式の操作は比較的単純で、解凍は比較的高速です。原理は、接続されたピクセルを 2 つの数値に分割することです。最初の数値は同じピクセルに接続されているピクセルの数であり、2 番目の数値はピクセル インデックス テーブル内のピクセルはどれくらいですか。たとえば、0506 は、同一のピクセルが 5 つ連続しており、ピクセル インデックス テーブル内のピクセルの位置が 06 であることを意味します。これにより、画像のサイズが大幅に縮小されますが、この圧縮により画像を形成することはできず、1 次元データの形式でしかできないように見えますが、画像のサイズは大幅に縮小されます。まず画像を読み取って 1 次元データに作成し、1 次元データを使用します。計算用のデータを取得し、二次元データに変換します。

おすすめ

転載: blog.csdn.net/new_EAGLE/article/details/125767585