JPEGを凌駕すると言われるBPGについて
JPEGに代わる? 新しい画像フォーマットBPGとは?(THE PAGE 2014/12/25)
まだMacはコンパイラが対応してなくて、Windows対応だけのようなのですが、
JPEGと同じ圧縮率でも解像度を高く保つことが出来る圧縮方法が開発されたそうですね。
(上のLena画像は右がBPG(5836bytes)、左がJPEG(5872bytes))
JPEGは小さめにしておけばさほど気にはなりませんが、Webページで900pxとかで表示しようとするとノイズが酷い時もあるので、使えるようになったら嬉しいです。
開発したのはフランスのエンジニア。圧縮処理した画像を変換出力する際の損失を少なくすることが出来るそうです。
JPEG圧縮では、画像を波形として捉え、周波数変換という手法で画像の大まかなところと細かいところに分けて考え、再現しにくい細かい部分を間引く処理を行っています。
JPEGでは周波数変換の際に0~7番目迄の余弦波を用いて変換する。これをDCT(離散コサイン変換)と呼びます。DCTは周波数成分を8x8のマトリクスによって再現します。
この方法で変換、復元を行うと、元の画像では見られなかったノイズ、モスキートノイズ、ブロックノイズが発生します。
Fabrice Bellardさんのサイトではデモ画像が沢山展示されているので、見てみると面白いですよ!
BPGでは復元を行う際に、これらのノイズを低減して滑らかに表現することが出来る様です。JPEGの実装に対する、BPGが用いている手法はHEVC/H.265という動画圧縮に用いられている手法のようです。また、非可逆圧縮にしか対応していないJPEGと違い、非可逆圧縮にも対応しています。
逐時近似法のような手法を用いているのかも知れません。ただ、もしNL(non local)-meansという手法を使っていたとしたら、恐らく医用画像には使えません。
というのも、遠い場所でも同じような輝度であれば、同じにしてしまおうという手法だからです。そうすると、確かに見た目には綺麗な画像だけれど、本当に確認したい情報を失ってしまう可能性もあります。(参考:このリンクのp.14~15)
ただ、Web page等に用いるときは、読み込みが非常に早くなっていいですね。
<追記>
ご指摘受けたのですが、BPGもどうやら離散コサイン変換を使っているが、ベースとする8x8の周波数の大きさを変えられるのではないか?という話がありました。とすると、より細かい周波数で分ければ、ノイズを少なくすることも可能ですね。
<参考URL>
BPG Encoder and Decoder(Github)…C++で書かれているみたい。
BPG Image Format(Fabrice Bellardさんサイト)
![]() |
出典:Fabrice Bellardさんのサイト |
まだMacはコンパイラが対応してなくて、Windows対応だけのようなのですが、
JPEGと同じ圧縮率でも解像度を高く保つことが出来る圧縮方法が開発されたそうですね。
(上のLena画像は右がBPG(5836bytes)、左がJPEG(5872bytes))
JPEGは小さめにしておけばさほど気にはなりませんが、Webページで900pxとかで表示しようとするとノイズが酷い時もあるので、使えるようになったら嬉しいです。
開発したのはフランスのエンジニア。圧縮処理した画像を変換出力する際の損失を少なくすることが出来るそうです。
JPEG圧縮では、画像を波形として捉え、周波数変換という手法で画像の大まかなところと細かいところに分けて考え、再現しにくい細かい部分を間引く処理を行っています。
JPEGでは周波数変換の際に0~7番目迄の余弦波を用いて変換する。これをDCT(離散コサイン変換)と呼びます。DCTは周波数成分を8x8のマトリクスによって再現します。
この方法で変換、復元を行うと、元の画像では見られなかったノイズ、モスキートノイズ、ブロックノイズが発生します。
![]() |
出典:Fabrice Bellardさんのサイト |
BPGでは復元を行う際に、これらのノイズを低減して滑らかに表現することが出来る様です。JPEGの実装に対する、BPGが用いている手法はHEVC/H.265という動画圧縮に用いられている手法のようです。また、非可逆圧縮にしか対応していないJPEGと違い、非可逆圧縮にも対応しています。
逐時近似法のような手法を用いているのかも知れません。ただ、もしNL(non local)-meansという手法を使っていたとしたら、恐らく医用画像には使えません。
というのも、遠い場所でも同じような輝度であれば、同じにしてしまおうという手法だからです。そうすると、確かに見た目には綺麗な画像だけれど、本当に確認したい情報を失ってしまう可能性もあります。(参考:このリンクのp.14~15)
ただ、Web page等に用いるときは、読み込みが非常に早くなっていいですね。
<追記>
ご指摘受けたのですが、BPGもどうやら離散コサイン変換を使っているが、ベースとする8x8の周波数の大きさを変えられるのではないか?という話がありました。とすると、より細かい周波数で分ければ、ノイズを少なくすることも可能ですね。
<参考URL>
BPG Encoder and Decoder(Github)…C++で書かれているみたい。
BPG Image Format(Fabrice Bellardさんサイト)
コメント
コメントを投稿