This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
方向性三次畳み込み補間(DCCI)は、Dengwen ZhouとXiaoliu Shenによって開発されたエッジ指向の画像スケーリングアルゴリズムです。 [1]
このスケーリングアルゴリズムは、画像のエッジを考慮することで、他の画像スケーリングアルゴリズムに共通するアーティファクトを軽減します。例えば、対角線や曲線上の階段状のアーティファクトが除去されます。
このアルゴリズムは、画像を元の寸法の2倍から1を引いたサイズに変更します。[2]
アルゴリズム
アルゴリズムは主に3つのステップで動作します。
- 元のピクセルを、ピクセル間に隙間を残して出力画像にコピーします
- 対角ギャップのピクセルを計算します。
- 残りの水平および垂直ギャップのピクセルを計算します。
斜めの隙間のピクセルを計算する
対角ピクセルの評価は、元の画像データの4×4領域で行われ、計算対象となる新しいピクセルは、元のピクセル間の隙間の中央に配置されます。これは、計算対象となる新しいピクセルを中心とした拡大画像の7×7領域と考えることもできます。元のピクセルは既にコピーされています。
アルゴリズムは、次の 3 つのケースのいずれかを決定します。
- 右上方向のエッジ -右下方向に沿って補間します。
- 右下方向のエッジ - 右上方向に沿って補間します。
- スムーズ領域 - 両方向に補間し、値に重みを掛けます。
斜めエッジの強度を計算する
d1 を右上方向のエッジの合計とし、d2 を右下方向のエッジの合計とします。
d1 を計算するには、X = 1 ~ 3、Y = 0 ~ 2 の範囲で、abs(P(X, Y) - P(X - 1, Y + 1)) の合計を計算します。
d2を計算するには、X = 0 ~ 2、Y = 0 ~ 2の範囲で、abs(P(X, Y) - P(X + 1, Y + 1))の合計をとります。
ピクセルの補間
(1 + d1) / (1 + d2) > 1.15の場合、右上方向にエッジがあります。(1 + d2) / (1 + d1) > 1.15の場合、右下方向にエッジがあります
それ以外の場合は、滑らかな領域にあります。除算と浮動小数点演算を避けるため、これは100 * (1 + d1) > 115 * (1 + d2)、および100 * (1 + d2) > 115 * (1 + d1)と表すこともできます。
右上エッジ
右上方向のエッジの場合、右下方向に補間します
出力ピクセル = (-1 * P(0, 0) + 9 * P(1, 1) + 9 * P(2, 2) - 1 * P(3, 3)) / 16
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
右下エッジ
右下方向のエッジの場合、右上方向に補間します
出力ピクセル = (-1 * P(3, 0) + 9 * P(2, 1) + 9 * P(1, 2) - 1 * P(0, 3)) / 16
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
滑らかな領域
滑らかな領域では、右上からのエッジの強度が右上のサンプリングされたピクセルに寄与し、右下からのエッジの強度が右上のサンプリングされたピクセルに寄与します
w1 = 1 / (1 + d1 ^ 5)
w2 = 1 / (1 + d2 ^ 5)
重み1 = w1 / (w1 + w2)
重み2 = w2 / (w1 + w2)
右下ピクセル = (-1 * P(0, 0) + 9 * P(1, 1) + 9 * P(2, 2) - 1 * P(3, 3)) / 16
右上ピクセル = (-1 * P(3, 0) + 9 * P(2, 1) + 9 * P(1, 2) - 1 * P(0, 3)) / 16
出力ピクセル = 右下ピクセル * 重み1 + 右上ピクセル * 重み2
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
残りのピクセルの計算
残りのピクセルの評価は、計算対象となる新しいピクセルを中央に置き、7×7の領域内の拡大された画像データに対して行われます。これらの計算は、画像の元のピクセル、または前のステップで計算された対角ピクセルのいずれかに基づいて行われます
アルゴリズムは、次の 3 つのケースのいずれかを決定します。
- 水平方向のエッジ - 垂直方向に沿って補間します。
- 垂直方向のエッジ - 水平方向に沿って補間します。
- スムーズ領域 - 両方向に補間し、値に重みを掛けます。
水平/垂直エッジ強度の計算
d1 を水平方向のエッジの合計とし、d2 を垂直方向のエッジの合計とします。
計算するピクセルを中心とした 7×7 のダイヤモンド型領域を考えます。元のピクセル値のみを使用し、対角方向から追加されたピクセル値を使用します。
d1 を計算するには、次のピクセル値をサンプリングして、水平エッジの絶対差の合計を取得します。
| P(X+1, Y-2) - P(X-1, Y-2) | + | P(X+2, Y-1) - P(X, Y-1) | + | P(X, Y-1) - P(X-2, Y-1) | + | P(X+3, Y) - P(X+1, Y) | + | P(X+1, Y) - P(X-1, Y) | + | P(X-1, Y) - P(X-3, Y) | + | P(X+2, Y+1) - P(X, Y+1) | + | P(X, Y+1) - P(X-2, Y+1) | + | P(X+1, Y+2) - P(X-1, Y+2) |
d2 を計算するには、次のピクセル値をサンプリングして、垂直エッジの絶対差の合計を取得します。
| P(X-2, Y+1) - P(X-2, Y-1) | + | P(X-1, Y+2) - P(X-1, Y) | + | P(X-1, Y) - P(X-1, Y-2) | + | P(X, Y+3) - P(X, Y+1) | + | P(X, Y+1) - P(X, Y-1) | + | P(X, Y-1) - P(X, Y-3) | + | P(X+1, Y+2) - P(X+1, Y) | + | P(X+1, Y) - P(X+1, Y-2) | + | P(X+2, Y+1) - P(X+2, Y-1) |
ピクセルの補間
(1 + d1) / (1 + d2) > 1.15の場合、水平方向にエッジがあります
(1 + d2) / (1 + d1) > 1.15 の場合、垂直方向にエッジがあります。
それ以外の場合は、スムーズな領域にあります。
浮動小数点除算演算を回避するには、100 * (1 + d1) > 115 * (1 + d2)、および 100 * (1 + d2) > 115 * (1 + d1) と表現することもできます。
水平エッジ
水平エッジの場合、ピクセルを中心とした列のみを使用して、垂直方向に補間します
出力ピクセル = (-1 * P(X, Y - 3) + 9 * P(X, Y - 1) + 9 * P(X, Y + 1) - 1 * P(X, Y + 3)) / 16
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
垂直エッジ
垂直エッジの場合、ピクセルを中心とする行のみを使用して、水平方向に補間します
出力ピクセル = (-1 * P(X - 3, Y) + 9 * P(X - 1, Y) + 9 * P(X + 1, Y) - 1 * P(X + 3, Y)) / 16
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
滑らかな領域
滑らかな領域では、水平エッジの強度が垂直方向にサンプリングされたピクセルの重みに寄与し、垂直エッジの強度が水平方向にサンプリングされたピクセルの重みに寄与します
w1 = 1 / (1 + d1 ^ 5)
w2 = 1 / (1 + d2 ^ 5)
重み1 = w1 / (w1 + w2)
重み2 = w2 / (w1 + w2)
水平ピクセル = (-1 * P(X - 3, Y) + 9 * P(X - 1, Y) + 9 * P(X + 1, Y) - 1 * P(X + 3, Y)) / 16
垂直ピクセル = (-1 * P(X, Y - 3) + 9 * P(X, Y - 1) + 9 * P(X, Y + 1) - 1 * P(X, Y + 3)) / 16
出力ピクセル = 垂直ピクセル * 重み1 + 水平ピクセル * 重み2
ピクセル値は、有効なピクセル値の範囲 (通常は 0 ~ 255) に強制する必要があります。
未指定
境界ピクセル
アルゴリズムでは、画像外側の境界領域をサンプリングする際に何を行うかは定義されていません。実行可能な処理としては、境界ピクセルを複製する、画像の反対側のピクセルを折り返す、画像の同じ側を逆に折り返す、特定の境界色の値を使用するなどが挙げられます
カラー画像
カラー画像はアルゴリズムによって指定されていませんが、エッジ強度を計算する際にすべてのRGB成分の差を合計し、ピクセルを補間する際にすべてのRGB成分を使用することができます。あるいは、YCbCrに分割し、輝度成分のみを処理し、異なるアルゴリズムを使用して彩度を伸張すること もできます
参照
参考文献
- ^ Dengwen Zhou、Xiaoliu Shen. 「方向性三次畳み込み補間を用いた画像ズーム」2015年9月13日閲覧。
- ^ Sabir, Essaïd; Medromi, Hicham; Sadik, Mohamed (2016-02-02). ユビキタスネットワーキングの進歩:UNet'15議事録. Springer. ISBN 978-981-287-990-5。