画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

06 | 2017/03 | 07
S M T W T F S
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

画素の補間(Nearest neighbor,Bilinear,Bicubic)

メインページ画像フィルタ処理
 

画像を拡大や回転する場合など、画像の画素と画素の間の輝度値を参照する必要が出てきますが、
その参照方法を紹介します。
この画素を画素の間を参照する事を一般に補間
内挿Interpolation)と言います。

 最近傍補間(ニアレストネイバー Nearest neighbor)

 Nearest neighborをそのまま訳すと、最も近いご近所、という事で参照する位置に最も近い位置に
 ある画素の輝度値を参照します。

 Nearest neighborニアレストネイバー

 求める画素間の座標が(x,y)の位置の輝度値を Dst(x,y) とし、もともとの画像の輝度値を

 Src(i,j) とすると

   Nearest neighbor
 で表されます。(ただし、[  ] は小数部分の切り捨てを表します。)
 つまるとこ、座標を四捨五入し、その画素の輝度値を参照します。

 双一次補間(バイリニア補間 Bilinear)

 バイリニア補間では求める位置(x,y)の周辺の2×2画素(4画素)を使って、輝度値を直線的に
 補間して、輝度値を求めます。

 
 直線的に補間する方法は、たとえば下図のようにX座標が180と181の2点間の180.8の
 位置の輝度値を求めるのは、2点の位置の輝度値の比から簡単に求まります。

 Bilinear補間
 
 この処理を手前の2点間、奥の2点間についてX軸方向に補間処理を行い、さらに補間した
 2点の輝度値を用いて、さらにY軸方向に補間処理することで、目的の輝度値を求めます。
 (Y軸方向から先に処理を行っても結果は同じです。)


 ちなみに、このBilinearの接頭語のbi-ですが、『二つの、双方向』というような意味が
 あるそうです。
 ということで、双方向からリニア(直線的)に補間したのが、このBilinearで、次に出てくる
 Bicubicは双方向から三次関数で補間したのが、Bicubicです。

 Bilinear補間
 この補間処理を式で表すと、
 
biLinear
 
 となります。


 双三次補間(バイキュビック補間 Bicubic)

 バイキュービック補間では求める位置(x,y)の周辺の4×4画素(16画素)を使って、輝度値を
 三次式で補間して輝度値を求めます。

 Bicubic補間

 この変換を式で書くと
 Bicubic補間
 となります。
 ただし、Src(i,j)は求める座標(x,y)の周辺の輝度値を表し、下図のような配置とします。

 Bicubicの輝度値の配置 

 また、12341234 は求める位置から参照する画素までの距離を表し、

    Bicubic
 
 と定義します。
 関数h(t)はsinc関数(sinc(t) = sin(πt)/
πt) をテイラー展開により三次の項まで近似した関数で

 Bicubic
 だそうで...(詳細は良く分かってません。)
  の値には-1前後がよく用いられます。


 まとめ

 各補間方法を使って、画像を拡大表示すると以下のようになります。

 【元の画像】
 内挿補間
 
 赤い四角の部分を拡大表示します。

 【Nearest neighbor】

 Nearest neighbor

 【Bilinear】 
 Bilinear

 【Bicubic】 
 Bicubic

 これらの画像を見ても分かるようにNearest neighborBilinearBicubicの順でギザギザなのが
 なめらかに拡大表示されます。

 この変換を1次元的に輝度値のグラフで見てみると
  内挿補間
内挿補間
内挿補間

 となります。
 ここで注意しないといけないのが、Bicubic補間がおおむね滑らかに輝度値を補間することが
 できますが、最後のグラフを見ても分かるように、輝度値が
オーバーシュート(アンダーシュート)ぎみ
 になる場合があります。その場合は補間の式の  の値を -0.2 程度のよりに近い値に
 すると回避することができます。 

Loading...
スポンサーリンク

この記事に対するコメント
Re: h(t)の分岐について

コメント頂きありがとうございます。
お返事が遅くなり申し訳ありません。

ご指摘の内容はt=±2の時、どちらの式で計算するか?という事だと思いますが、
t=2もしくはt=-2の時、どちらの式でもh(t)の値は0になるので、数式的には
「1<|t|≦2」でも「1<|t|<2」でも同じ事なのですが、プログラム的には
わざわざ計算しなくてもh(t)は0と分かっているので、「1<|t|<2」とした方が
確かに有利ですね。
【2014/07/12 01:34】 URL | Akira #- [ 編集]

h(t)の分岐について
はじめまして
趣味でプログラムをやっている者です

英語ですがここを見ると
http://en.wikipedia.org/wiki/Bicubic_interpolation

1<|t|≦2ではなくて
1<|t|<2になっています
(変数はこちらのページ内に合わせtを使用)

必要があれば修正よろしくお願いします
【2014/07/08 04:47】 URL | ハム #- [ 編集]

Re: bilinearの式について
muranoyaさん、ご指摘頂きありがとうございます。
この記事を修正するときにエクセルで確認していたのですが、なぜ間違ったのか??
今回はディジタル画像処理の本は参考にして見ていないので、計算式の表現は若干異なるかもしれませんが、式を修正しました。
ご確認頂けると幸いです。
【2014/04/04 00:56】 URL | Akira #- [ 編集]

bilinearの式について
私も『ディジタル画像処理 第2版7刷』を参考にBilinearを実装しましたが、『ディジタル画像処理 第2版7刷』のほうの式が正しいように思います。
このウェブページで紹介されている(恐らく訂正後、正しくは訂誤後?であろう)Bilinearの式を使うと、画像に鳥肌が立ったようになります。
【2014/04/03 02:13】 URL | muranoya #PII1.aMA [ 編集]

Bilinearの変換式を修正しました。
このBiLinearの変換式は『ディジタル画像処理』という本を参考に書いたのですが、この変換式がちょっと違ってたようで、式を修正しました。
ご迷惑をおかけしました。
【2011/02/09 21:41】 URL | Akira #- [ 編集]

Re: bicubic
yu-kiさん、ご指摘頂きありがとうございます。
結論からすると、行列の部分はhxとhyは逆ではなく、4x4の行列の部分をSrc(j, i)としていたので、合っていたと思われます。(ただの強がりです...)
しかし、添字の図もソバに書いてあるので、分かりづらいですよね?
ということで、xとyに関する部分を全て入れ替えました。
これで、合っていますよね?

>> h[t]=(-a|t|^3-5a~・・  でなく h[t]=(a|t|^3-5a~・・
という部分は、素直に間違いを認めてしまいます。申し訳ありません。

本文も直しておきましたので、確認して頂けると幸いです。
【2010/07/09 00:08】 URL | Akira #- [ 編集]

bicubic
わたくし,大学の研究に相互関法を使うので,いつも楽しく拝見させいただいております.
bicubicの式に間違いがあるようなので投稿させていただきました.
Dst(x,y)=~  のマトリックスでhxとhyが逆なのと,
h[t]=(-a|t|^3-5a~・・  でなく h[t]=(a|t|^3-5a~・・ 
のようです.実際にプログラミングしてから気づきました(笑)



【2010/07/08 22:54】 URL | yu-ki #SFo5/nok [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/142-04305e76
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計