2011-12-29 4 views
1

このquestion'sの回答に基づいて、画像の高域DCT係数を削除して、画像を縮小する必要があります。JPG画像から高域係数を削除する

私はこれを行う方法を探していました。それはそれほど単純ではないようです。私は自分のコードでIDCTを行う次の2つのループを持っており、8 x 8ブロックのサブセットでループを実行すると非常に歪んだ画像しか得られません。

for (coef = 0; coef < 64; coef +=8) 
     njRowIDCT(&nj.block[coef]); //Inverse Discrete Cosine Transform 
    for (coef = 0; coef < 8; ++coef) 
     njColIDCT(&nj.block[coef], &out[coef], c->stride); // Inverse Discrete Cosine Transform 

block私は削除する必要がある係数は、各ブロックの右下隅にあることを知っている64 intさん

の配列が、しかし、何が削除または廃棄する最善の方法だろうです彼らは正しく?

答えて

0

私は、高周波成分を単に廃棄することはできないと思います。あなたの観察もそれを証明します。なぜなら、平均2x2または4x4ブロックの場合、特定の高周波成分を完全に破棄しないからです。代わりに、低い周波数に対するエネルギーレベルを下げます。だから、ゼロまで完全に減らすのは良い考えではありません。

私は、あなたが高頻度が実際に意味するものに十分注意を払っていないと思います。画像にSobelまたはPrewittエッジ検出を適用し、2値化してください。その後、そのバイナリイメージ上の各ピクセルを照会して、そのピクセルがエッジの一部であるか破棄されたピクセルであるかを照会します。それがエッジの一部である場合は、現在のピクセルを「除外」して元の画像に平均フィルタを適用します。さて、それはどのように見えますか?

+0

これで画像が縮小されますか? –

+0

明らかにそうではありません。これは、高周波除去が何を意味するのかを理解するための例でした。私の例を想像してみてください。あなたは実装する必要はありません。あなたがそれを正しく考えるならば、高周波除去は実現可能な解決法ではないことを理解するでしょう。 –

+0

私は今それを得るので、私のイメージをダウンスケールする方法についての答えがありますか? –

関連する問題