ZuruyasumiNekoのほーむぺーじ2
1.分割マクロブロックによるDCTリサイズ
原画
4x4マクロブロックDCTで5倍
上の画像は、原画のLENA画像を縦横それぞれ5倍にしたものです。このとき、原画を4画素x4画素の正方形に分解して、分解したものをそれぞれDCTリサイズで5倍したものを合成したものです。
分解したブロックをマクロブロックと呼ぶことにすると、マクロブロック境界がでてしまうのが、分解拡大の欠点です。おそらく画像周辺で画素値があばれているのでしょう。
オーバラップ1の4x4DCT
そこでまず、4x4マクロブロックの周辺1画素を含めて6x6マクロブロックとします。それを5倍拡大した30X30の画像の中央部20x20を抜き出して、合成するという方法をとります。
これが上の画像です。このオーバラップ1の4x4DCT画像は、境界が若干みえています。
オーバラップ4の4x4DCT
4x4マクロブロックの周辺4画素までとって(12x12)リサイズし、中央部だけとりだして合成したものが上の画像です。画素値が乱れる画像周辺部を避けているので、境界がなく非常にきれいな画像となります。
画像全体をDCTリサイズで5倍
上の画像は、画像全体でDCTリサイズした画像です。
オーバラップ4の4x4DCTとの比較のためにのせました。
2.縮小の話
画像縮小は、本質的に画像圧縮です。
8画素x8画素の離散コサイン変換を行い、高周波成分ほど量子化を荒くして逆変換するJPEGなどのアルゴリズムでは、高い周波成分ほど0値が多くなり、
その処理は、LPFみたいなものだからです。
通常より荒い量子化によって、JPEGなどでは特有の歪みがでます。
高周波成分を除去し、量子化も細かく行えば、画像はぼけるだけで、歪んだ感じはうけないと思います
ぼけた画像も遠くからみれば解像感があがることを経験するでしょう
それは人間の目のレンズによる光学的縮小がおこなわれるからです
このとき情報量は変わっていません。
ぼけた大きい画像と小さいくっきりした画像の情報量は同じにすることができるのです。
画像が小さくなるとデータ量が減ったと実感できますよね
ボケた画像を小さくしてくっきりした場合データ量はへるけれども情報量はかわってないのです
ぼけた大きい画像とくっきりした小さい画像の情報量は同じです
シャノンのサンプリング定理は、情報理論を波形に適用したものなのです。
シャノン先生は、あいまいな情報という概念を数学にのせました
そして、波形というあしたは晴れだというような情報とは違うものも情報であるということをサンプリング定理によって示したといえると思います
天才です
また、縮小リサイズは画像圧縮といいましたが、ホワイトノイズは圧縮できません。同様にホワイトノイズは縮小できません。
なぜリサイズできるかというと、人間が一般に画像と認識する画像は低周波成分に偏っているからです。
画像圧縮に一般に言えることは、縮小リサイズにも成り立ちます。
3.DCTについて一言
DCTは現在画像圧縮、音声圧縮にしか使われていませんが、画像分析には強力なツールです。DFTでは、画像の左右、または上下の画素値が同じでないとき窓関数をかけなければいけませんが、
DCTでは、連続性が保たれている(微分可能性は、保たれていないことが多い)ため、画像の左右上下の不連続性による、本来の画像には含まれない高周波成分を減らすことができます。
実数のDFTでは偶関数部がCOS成分で実部に、奇関数部がSIN成分で虚部になります。COSでは同じデータが、SINでは符号が違う同じデータがあらわれます。
このことより、DFTが、2倍の冗長度をもっていることがわかります。DCTは、偶関数化してSIN成分が消えますが、画像の左右、上下の不連続性を抑えるために
窓関数をかけるよりも、偶関数化のほうが、本来の画像の性質を表していると考えられます。したがって、DCTをもっと利用すべきだと思います。
ただし、演算量は、画像サイズが2のべき乗になることがめったにないことから、FFTのような高速算法がないことが弱点ではあります。
なぜ、DCTのように鏡像展開したものが、展開する前の1枚の画像の特徴をしめしているかというと、DFTでも1枚の画像の特徴をしめしているわけでなく、その画像を上下左右に永遠につなげた
無限平面の画像の特徴をしめしているからです。どうせ無限平面の画像の特徴なら、鏡像状に無限平面に展開したほうがよいということです。サンプリングのなせるわざです。
DFTやDCTでは、周波数空間もサンプリングされているため、孤立波形のサンプリングされた点の集合が永遠に左右に続いてしまうのです。
4.減色について
メディアンカット法で24ビットカラー(1670万色)を8ビットカラー(256色)に減色する際
(A)RGBボックスのうち体積が最も大きいものを長軸のメディアンで分轄する方法
(B)RGBボックス内の画素数が最も多いものを長軸のメディアンで分轄する方法
の2通りで検証してみました。次がその画像です。
原画
(A)体積の大きいものを分轄(RGB空間)
(B)画素数の多いものを分轄(RGB空間)
このように、(B)の方法の方が若干良好な画像が得られます。
さらに、メディアンカットで決めた256色のカラーパレットを初期値としてKmeans法によるクラスタリングを行い
最適化を行いました。プログラムは、100イテレーション以内で最適化が終了すると描画、100イテレーションを超える場合
100イテレーションで打ち切って描画する処理になっています。
次の画像は、100イテレーションで打ち切った画像です。
メディアンカット+Kmeans法(RGB空間)
このように、かなりきれいな画像が得られます。
次に分散が最大になる軸に垂直な平面で平均で分轄したものを次に示します。なお、画素と分轄領域の画素全体の平均の間のユークリッド距離が最大の画素を含んでいる領域を分轄対象に選ぶようにしました。
分散最大軸に垂直な平面で平均で分轄法(RGB空間)
色空間をかえてやってみたものを次に示します。
分散最大軸に垂直な平面で平均で分轄(YUV空間)
分散最大軸に垂直な平面で平均で分轄(CIELAB空間)
分散最大軸に垂直な平面で平均で分轄(CIELUV空間)
CIELAB,CIELUVは均等色空間なので理論的には、良い結果となるはずでしたが、ご覧のようによくありませんでした。
次に、平均でなく大津法で決めた分轄面で分轄するようにしました。
重ねて、マッハバンド対策でYUV空間のYを4倍に伸ばした空間でやってみました。
同様LAB,LUVのLを4倍に伸ばした空間でやってみました。
さらに重ねて、Kmeans法による最適化も行いました。Kmeans法での最適化は、すべての場合に効果がありました。
分散最大軸に垂直な平面で大津法で分轄(LUV空間)
分散最大軸に垂直な平面で大津法で分轄4xL_UV空間)
分散最大軸に垂直な平面で大津法で分轄+Kmean100回イテレーション(4xY_UV空間)
分散最大軸に垂直な平面で大津法で分轄+Kmean100回イテレーション(4xL_AB_CIELAB空間)
分散最大軸に垂直な平面で大津法で分轄+Kmean100回イテレーション(4xL_UV_CIELUV空間)
上の画像ではグラデーションがわかりにくいので、画像を変えてたものが、次の画像です。先に原画を示します。
原画
YUV空間のYを4倍に伸ばした空間で分散最大の軸に垂直に大津法で決めた分轄面で分轄&Kmeanで最適化の減色画像
減色の記事を書くにあたって参考にした文献は、「カラー画像複製論」田島譲二先生著です。
Vectorにのせている減色ソフトをアップしておきます。
24ビットビットマップファイルを8ビットビットマップファイルにします。
使い方は、24ビットビットマップファイルをドラッグアンドドロップして、減色するボタンをおして、保存するボタンをおせばOKです。
ずるねこの画像減色!256色にするよ誤差拡散なしver004
ずるねこのグラデ重視減色!誤差拡散なしver001
ずるねこの高速減色!誤差拡散なしver001
ずるねこの高速減色グラデ重視減色!誤差拡散なしver001
ずるねこの高速減色!256色にするよ!誤差拡散ありver002
さらに、上にのせている5つのソフトより、高画質な画像が得られる決定版のソフトのソースだけのせておきます。
EDGETHの値をいろいろ変えると、究極の高画質減色画像を得ることができます。
ソース
グラデ重視バージョン
ソース
次は、DCT,Lanczos3,Hybrid画像拡大プログラム
画像拡大ソフトウェア 24bit BMP onlyダウンロード
英語バージョン
picture interporation software download 24bit BMP only
Return to Main page