「増補改訂版 図解でわかる はじめてのデジタル画像処理」山田 宏尚 著

疑似輪郭または疑似エッジ
https://www.jfpi.or.jp/webyogo/index.php?term=3168
http://www.fujitsu.com/downloads/JP/archive/imgjp/jmag/vol49-3/paper10.pdf

XYZ表色系
http://www.dic-color.com/knowledge/xyz.html

ITU-R BT.709
ハイビジョン(2K)放送でのXYZ表色系で表現できる色の範囲の規格
https://en.wikipedia.org/wiki/Rec._709
https://www.itu.int/rec/R-REC-BT.709/en

ITU-R BT.2020
4Kまたは8K放送でのXYZ表色系で表現できる色の範囲の規格
https://en.wikipedia.org/wiki/Rec._2020
https://www.itu.int/rec/R-REC-BT.2020/en

L*a*b*表色系
http://w3.kcua.ac.jp/~fujiwara/infosci/lab.html
http://www.daicolor.co.jp/rd/color/system/index.html
カラーマネジメントシステムで使用されることが多い。

ディープカラー
24ビットを越えた濃度値による

YIQ信号
NTSCで使用されていたカラーをモノクロに変換する方式
Y: 輝度信号
IとQ: 色差信号

平滑化 (ノイズ除去)
ごま塩ノイズ
移動平均フィルター … ぼけやすい
加重平均フィルター … 移動平均フィルターよりは良いがまだぼけやすい
メディアンフィルター … 処理に時間がかかるが品質が良い

エッジ抽出フィルター
輪郭線を抜き出す
カラー画像の場合にはモノクロに変換してから処理する
輪郭を求めるには微分をすれば良いが、離散データでは微分できないので、代わりに差分の絶対値を計算する
どの方向の差分を計算するかで結果が変わる
単純に縦、横、斜め等で計算するのではなく、Robertsのエッジ検出オペレーター、Prewittのエッジ検出オペレーター、Sobelのエッジ検出オペレーターなどを使うのが有効
2次微分(ラプラシアン)をすることでエッジを検出するのも有効
2次微分も離散データではできないので、2次差分をとる

鮮明化フィルター
なめらかなエッジを持つ原画像からラプラシアンを減算することで鮮明化されたエッジを得られる


濃度ヒストグラムで両サイドに満遍なく棒グラフが分布するような画像はコントラストが良い
コントラストの悪い画像は、濃度ヒストグラムで一部の濃度のみ度数が高い
濃度ヒストグラムを均一化することでコントラストを改善できるが、この処理には時間がかかる

コントラストを変えるには、濃度ヒストグラムを使った方法より短い時間しかかからないトーンカーブを使ったものもある
トーンカーブの形によって、変換後の画像が変化する
右下がりの直線のトーンカーブを使うとネガポジ変換ができる
階段状のトーンカーブを使うとポスタリゼーションができる
山形のトーンカーブを使うと金属光沢を持つようにするソラリゼーションができる

HDR (ハイダイナミックレンジ合成)
逆光で写真撮影すると、撮影対象が暗くつぶれ気味になってしまうが、これを解決するためには、露出の異なる写真を複数撮影して1枚の写真に合成する
テレビのHDRとここでのハイダイナミックレンジ合成は異なる技術である

ハーフトーン
網点の大きさにより、階調の表現をする
ディジタルで網点を表現する場合には、網点の形は円である必要はなく、いびつな形にするとで通常の網点より、精細が画像を表現できる
CMYKでカラー印刷する場合も、各インクの濃さを変えることはできないので、網点を使用するしかない(AMスクリーニング)
網点が各色で重ならないように、スクリーン角度を変えて印刷する
しかし、モアレパターンやロゼッタパターンといった、本来の画像とは違う模様が見えてしまう場合がある
これを避けるために、FMスクリーニングを使うことができる

ハーフトーンは、印刷で使われるが、PC用のプリンターではディザ法や誤差拡散法と言うFMスクリーニングの一種が使われることが多い
ディザ法には組織的ディザ法やランダムディザ法といった様々な方法がある

画像を空間的な離散フーリエ変換や離散コサイン変換により表現する
その上で、特定の周波数をカットするフィルターを考える
ハイパスフィルターであれば、輪郭部分のみ抽出される
ローパスフィルターであれば、ぼやけた画像になる
自然な画像には高い周波数成分はあまり含まれていないものなので、ローパスフィルターを適用しても画像はあまり変わらない
画像圧縮では、この性質を利用している

オペレーターを使ったフィルター(移動平均フィルターなど)は、本質的には離散フーリエ変換を使うフィルター処理と同一である

解像度を一定にし表現できる周波数をどこまで上げることができるか考えると、標本化定理(サンプリング定理)により、標本化周波数の1/2を越える周波数成分を持つ波形を無理に標本化しようとすると、エリアシングが発生する
エリアシングを起こさないための方法はアンチエリアシングと呼ばれ、標本化定理で決まる最大の周波数であるナイキスト周波数を越える部分をカットするローパスフィルターを使う

JPEGの規格自体は、詳細なファイルフォーマットまで定めていないとめ、JFIFやEfif形式が使用されている
JPEGのJFIF形式での基本方式では、YCbCrと言うカラーモードで記録する
NTSCで使用されるYIQに似ているが、YCbCrはBlu-ray等で使用されている
YIQはCRTの特性に基づくもので、YCbCrは現在の性能の向上したディスプレイに対応するものである
RGBの画像を、Y成分、Cb成分、Cr成分に分解すると、輝度成分であるYに比較して色差成分であるCb成分とCr成分のコントラストは低くなる
これは人間の眼は輝度に比べて色差には鈍感であることによっている
画像を圧縮するには、輝度成分はそのままにして、色差成分の解像度を落とすことが行われる(サブサンプルする)

JEPGでは、人間の目は画像の低い周波数成分には敏感だが、高い周波数成分には鈍感であるという特徴を利用して、離散コサイン変換を使って高周波成分を減らすことでデータを圧縮する
JPEGでは画像全体に離散コサイン変換を施すのではなく8×8ピクセルのブロックに分割して離散コサイン変換を施す
この方が計算速度は速くなる
8×8より小さなブロックだと、計算誤差が大きくなり画像は劣化してしまう

8×8の左上のセルがDC(直流)成分であり、それ以外はAC(交流)成分である。右下に行くほど高周波である
8×8ごとに離散コサイン変換を施した結果を行列にし、それぞれのセルを量子化行列の同じ位置のセルで除算した結果の行列は、高周波成分を切り落としたものである

フォトレタッチソフトウェアでのJPEGの圧縮率は、量子化行列を決めている
量子化行列の高周波成分の値が大きくなると、圧縮率は高くなる

エントロピー符号化では、DC成分とAC成分を分けて、圧縮する
DC成分はハフマン符号化により圧縮する
ハフマン符号化では、あまり使用されていない数字を大きなビット数で表現し、よく使用される数字を小さなビット数で表現することにより、全体としてデータ数を減らす
ハフマン符号化はエントロピー符号化である
エントロピー符号化とは、データの無駄な部分を取り除いて、データの持つ本来の情報量(エントロピー)に近付ける符号化方法である
AC成分は、ランレングス符号化で圧縮した上で、ハフマン符号化する

コントラストの高い部分では、モスキートノイズが発生する
ブロックノイズは、8×8のブロックの境界に発生するノイズであり、濃度値の差が少ないところで目立つ

離散コサイン変換ではなくウェーブレット変換を使う方式もあり、JPEG2000で採用されている
ブロックに分割しないで画像全体を処理するためブロックノイズやモスキートノイズが発生しない

JEPGの可逆圧縮方式では、予測符号化が利用されている
隣接する画像同士は近い濃度値を持つという前提で、濃度値の差分のみ記録し、更にハフマン符号化をする

動画像のディジタルテレビ放送では、インターレース方式とプログレッシブ(ノンインターレース)方式が存在する

MPEG1は、SDTVを1.5Mbps程度に圧縮する
フレーム間予測符号化と動き補償で実現している
動き補償では、被写体の動きを動きベクトルで把握する
前のフレームと次のフレームの誤差を求め、誤差の最小になるブロックを求める(ブロックマッチング法)
求めた差分画像を、離散コサイン変換で圧縮する
動画像の場合には、物の輪郭は静止画像よりもあいまいなので、高周波成分の値は小さい
かつ、人間の目の動画像に対する高周波成分に対する感度は、静止画像に比較してさらに低いので、高周波成分をよりカットしても問題ない

MPEGではGOP (Group Of Pictures)という単位があり、Iピクチャー、Pピクチャー、Bピクチャーが組になっている
Iピクチャーはそのフレーム内だけで、JPEG静止画像のように符号化される
Pピクチャーは、1つ過去のIピクチャーから未来方向に動き補償フレーム間予測により符号化される
Bピクチャーは、過去のIピクチャーと未来のPピクチャーから双方向に動き補償フレーム間予測により符号化される
圧縮率は、I<P<Bの順に大きくなる
I/P/Bの数は、エンコーダーによって異なった良い

MPEG2では、可変ビットレート(VBR)を使うことができ、固定ビットレート(CBR)よりデータ量が少なくてすむ
可変ビットレートでは、動きの少ないシーンではビットレートを低く、動きや変化の激しいシーンでは。ビットレートを高くできる
可変ビットレートは、未来が分からない場合には効果が小さいことがある
既にハードディスクに記録された画像に対しては、2パスエンコードすることで、エンコードには時間がかかるが、データ容量に対する画質は良くなる
1パスでは動画像全体を調べビットレートの配分を決め、2パスでは1パスで決められたビットレートの配分に合わせて可変ビットレートで符号化する

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...