RGB32について
![](http://blog.x-row.net/wp-content/uploads/rgb32.png)
Verethragna「0.12.2」で実装されたVerethragnaのRGB32について。
さて、ついにRGB32の色空間が実装されました。Windowsの色空間はRGBですので基本的にこれが頂点となります。YUV444で頂点だと思ってましたけどそれは幻でした。
映像圧縮となりますとYUVの方が圧縮しやすいのでエンコード時にRGBからYUVに変換してデコード時にYUVからRGBに変換が発生します。この変換の際に計算式のBT.2020みたいなのが登場しますがどーしてもこの処理で劣化が生じてしまうことになります。
どーにかしてこの計算式を使わない、よーわYUVに変換しない方法を模索して早数年。よーやく実装にこぎつけたわけでございます。WindowsですとRGBを超える色空間は存在しませんからね。RGBが最高点なんです。何べんでも書きます。
ちなみにRGB32というとアルファチャンネルが含まれていますが、VerethragaのRGB32では器と値はあるのですが、値的にほぼ失われており、実質的にはRGB24に近いです。サイズ的な32bitの意味合いにすぎませんのでご承知おきください。アルファチャンネルが微妙なので最後までRGB24にしようか迷いましたけど巷では意外とこのケースが多いようなもので、まいっかとしました。
![](http://blog.x-row.net/wp-content/uploads/rgb32.png)
![](http://blog.x-row.net/wp-content/uploads/org.png)
できあがったRGB32を見てみますとほぼ劣化なしの超高画質でございます。ちなみにこちらは画質の設定は最高です。ほぼノイズはないのですが、良く見ると(良く見ても分からないレベルなんですが)色のRGBの値が1だけ違う箇所がところどころあります。これが劣化している箇所です。
![](http://blog.x-row.net/wp-content/uploads/v.png)
こちらは旧バージョンまで実装されているYUV444でノイズが少し乗っていました。こちらもノイズが良く分からんレベルと言えばそーなのですが。
![](http://blog.x-row.net/wp-content/uploads/av1_hq.png)
![](http://blog.x-row.net/wp-content/uploads/h264_hq.png)
ちなみになんですけど耳にタコだと思いますが、VerethragnaのYUV444は特別製でしてYUVとRGBのハイブリッドである独自のYUV444でいわば超YUV444で文字通り一般的なYUV444の画質を超えていましたので他のYUV444とは比べもんになりませんのでご承知おきください。一般的なYUV444は上図のよーなクオリティでございます念のため。
そーゆー意味では今回のRGB32も特別製なんですけど。RGBは圧縮率が悪いのは先述した通りですが、かといってサイズが大きいのは取り扱いに困ります。ですので、今回のRGB32では符号化と量子化は実施しておりその際に極わずかに劣化が生じています。ただ、この符号化と量子化によりかなり圧縮率が高まってましてYUV444の圧縮率とほぼ遜色ないレベルを実現しているんです。
このようにYUV444を完全に超えるRGB32を実装できたわけですが、色空間はRGBのままでも圧縮率や負荷に関してはまだまだ改良の余地があると考えてます。映像圧縮アルゴリズムのベースはVP8ですが既に互換性は失われつつあるので、この際リモートデスクトップに特化したアルゴリズムを突き詰めたいと考えてはおりますが、かなーり時間がかかりそうですので、これは老後の楽しみにとっておきたいと考えておりますー。