ラスタデータの処理 -微分とその応用- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :

Slides:



Advertisements
Similar presentations
画像処理・実習 第五回: 空間フィルタ (特徴抽出,ラプラシアン,鮮鋭化) 東海大学 情報理工学部情報メディア学科 濱本和彦.
Advertisements

Absolute Orientation. Absolute Orientation の問題 二つの座標系の間における剛体 (rigid body) 変換を復元す る問題である。 例えば: 2 台のステレオカメラから得られた3次元情報の間の関 係を推定する問題。 2 台のステレオカメラから得られた3次元情報の間の関.
2. 数値微分法. 数値微分が必要になる場合として、次の 2 つが考えられる。 関数が与えられていて、その微分を近似的に計算する。 (数値微分の精度が十分で、かつ、計算速度が数値微分の方が 早い場合など。) 離散的な点の上で離散的なデータしかわかっていない関数の微 分を近似的に計算する。(偏微分方程式の数値解を求めたい時.
1 微分・ベクトル解析 (4) 講師:幹 浩文( A314) TA :西方良太 M 1 ( A305 ) A 1 03 ( 10 : 50~12 : 20 ) 【金】 https://
1 運動方程式の例2:重力. 2 x 軸、 y 軸、 z 軸方向の単位ベクトル(長さ1)。 x y z O 基本ベクトルの復習 もし軸が動かない場合は、座標で書くと、 参考:動く電車の中で基本ベクトルを考える場合は、 基本ベクトルは時間の関数になるので、 時間で微分して0にならない場合がある。
陰関数定理と比較静学 モデルの連立方程式体系で表されるとき パラメータが変化したとき 如何に変数が変化するか 至るところに出てくる.
1. 補間多項式 n 次の多項式 とは、単項式 の 線形結合の事である。 Definitions: ( 区間, 連続関数, abscissas (データ点、格子点、差分点), 多項 式 ) Theorem. (補間多項式の存在と一意性) 各 i = 0, …, n について、 をみたす、次数が高々 n.
Imagire Day CEDEC 2009続・レンダリスト養成講座 田村 尚希 川瀬 正樹 シリコンスタジオ株式会社.
Determining Optical Flow. はじめに オプティカルフローとは画像内の明る さのパターンの動きの見かけの速さの 分布 オプティカルフローは物体の動きの よって変化するため、オプティカルフ ローより速度に関する情報を得ること ができる.
原子動力工学特論 課題2 交通電子機械工学専攻 2003310 齋藤 泰治.
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第四回 演習課題 画像中からの物体抽出処理(背景情報を手がかりとして) 芝浦工業大学 工学部 情報工学科 青木 義満 2006/05/15.
・力のモーメント ・角運動量 ・力のモーメントと角運動量の関係
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
エッジの検出 画像中に表示された物理の輪郭(エッジ(edge))や線では、一般的に濃淡が急激に変化しており、これらは画像中のなんらかの構造を反映していることが多い このようなエッジや線の検出処理は、画像理解や認識のための前処理として重要である   差分型によるエッジ検出   零交差法によるエッジ検出.
上坂吉則 尾関和彦 文一総合出版 宮崎大輔2003年6月28日(土)
シミュレーション論Ⅰ 第4回 基礎的なシミュレーション手法.
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
周期境界条件下に配置されたブラックホールの変形
SURF: Speeded Up Robust Features
DARTs: Efficient scale-space extraction of DAISY keypoints
多変数関数の積分(6/3~24) 重積分(2重積分) 第6章(§5は除く) 重積分の定義 「連続関数は積分可能」
(ラプラス変換の復習) 教科書には相当する章はない
金沢大学 工学部 情報システム工学科3年 岩淵 勇樹
Yuri Y. Boykov Marie-Pierre Jolly
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
線形フィルタと畳み込み積分 マスクによる画像のフィルタリング 1.入力画像中の関心の画素のまわりの画素値
CGと形状モデリング 授業資料 長井 超慧(東京大学)
C 言語について 補足資料 資料および授業の情報は :
 統計学講義 第11回     相関係数、回帰直線    決定係数.
画像処理 基礎.
エッジの検出 画像中に表示された物理の輪郭(エッジ(edge))や線では、一般的に濃淡が急激に変化しており、これらは画像中のなんらかの構造を反映していることが多い このようなエッジや線の検出処理は、画像理解や認識のための前処理として重要である   差分型によるエッジ検出   零交差法によるエッジ検出.
CGと形状モデリング 授業資料 長井 超慧(東京大学)
Hough変換 投票と多数決原理に基づく図形の検出
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
ポリゴンメッシュ (1) - データ構造とレンダリングに必要な計算 -
CAD曲線 (ベジエ曲線・Bスプライン曲線)
人工知能特論 9.パーセプトロン 北陸先端科学技術大学院大学 鶴岡 慶雅.
OpenGLライブラリを用いた3次元フラクタルの描画
高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第二回 演習課題
高度情報演習1C 実践 画像処理プログラミング 第二回 演習課題
第14章 モデルの結合 修士2年 山川佳洋.
流体の粘性項を 気体分子運動論の助けを借りて、 直感的に理解する方法
構造情報に基づく特徴量を用いた グラフマッチングによる物体識別 情報工学科 藤吉研究室  EP02086 永橋知行.
6. ラプラス変換.
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
ルンゲクッタ法 となる微分方程式の解を数値的に解く方法.
Poisson Image Editing SIGGRAPH 2003
東京農業大学 東京情報大学 附属第一高等学校・中等部 附属第二高等学校 附属第三高等学校・中等部
主成分分析 Principal Component Analysis PCA
CAD曲面 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
2つの平行光の観測による 内部カメラパラメータの安定なキャリブレーション
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
ポリゴンメッシュ (2) - 変形と簡略化- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
計測工学 計測工学8 最小二乗法3 計測工学の8回目です。 最小二乗法を簡単な一時関数以外の関数に適用する方法を学びます。
Poisson Image Editing SIGGRAPH 2003
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング論 相関
モデルの微分による非線形モデルの解釈 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
Cプログラミング演習 ニュートン法による方程式の求解.
プログラミング演習I 数値計算における計算精度と誤差
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
ベクトル関数の回転(カール、ローティション)
市松模様を使用した カメラキャリブレーション
プログラミング入門2 第5回 配列 変数宣言、初期化について
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
Presentation transcript:

ラスタデータの処理 -微分とその応用- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は : 資料および授業の情報は : http://www.den.rcast.u-tokyo.ac.jp/~yu-ohtake/GeomPro/

今回の授業の目的 ラスタデータに関して 微分量計算の意味と応用を学ぶ エッジ検出, 平滑化, 領域分割 など

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

ラスタデータ 等間隔に配置された値 2次元 (2D) 値 1次元 (1D) 値 例: デジタル音声 例: デジタル画像

http://marathon.csee.usf.edu/ range/DataBase.html 画像の種類 写真 (光の強さ) レンジデータ (奥行き) CT・MRI 断面画像 本授業では グレイスケールのみ扱う 写真 CT (密度) 奥行き (手前が黒) http://marathon.csee.usf.edu/ range/DataBase.html www.lenna.org MRI (水素の含有量)

連続な関数を等間隔にサンプリングしたもの とみなして処理をする 1Dの場合の数学モデル 連続な関数を等間隔にサンプリングしたもの とみなして処理をする 1Dラスタデータ 1D連続関数

連続な関数を横と縦に等間隔にサンプリングしたもの とみなして処理をする (画像表示では通常は高い値が白となる) 2Dの場合の数学モデル 連続な関数を横と縦に等間隔にサンプリングしたもの とみなして処理をする (画像表示では通常は高い値が白となる) 2Dラスタデータ 2D連続関数

線形補間 データを点とみなして線・多角形でつなぐ事 頂点 辺 面 データのレンダリングによく使われる 1Dデータの線形補間

データの記述方法 値の数列として考える 1Dラスタデータ 2Dラスタデータ

宣言は長さ3の配列を 4本並べるという意味で: 2次配列 2Dラスタデータを計算機で扱うのに必要 配列を並べた配列 宣言は長さ3の配列を 4本並べるという意味で: float f[4][3]; 2本目: f[2][0], f[2][1], f[2][2] 0本目: f[0][0], f[0][1], f[0][2] は、f[j][i] でアクセスする フォートランとは逆になる

プログラミング課題 1 prog2-1 を使う x 軸上からデータへ直線を描け。また、データを線形補間して折れ線として表示せよ 関数 “drawData” を埋める 先頭のデータの x 座標は 0 をする (表示領域は、x と y どちらも 0~1) main 関数にある “readData” の呼び出しの引数を他のファイルに変えて表示してみよ データはフォルダ “data” の中

プログラミング課題 2 prog2-2 を使う マウスとキーボードで以下を試せ 左ドラッグ : 回転 右ドラッグ : 拡大・縮小 真ん中ドラッグ : 平行移動 ライト効果の ON/OFF : ‘c’ キー ワイヤー表示の ON/OFF : ‘w’キー main 関数にある “readData” の呼び出しの引数を他のファイルに変えて表示してみよ データはフォルダ “data” の中 f’ キーで呼び出される上下(白黒)反転関数 “flipUpDown” を完成させよ データの値の範囲は0~1とする

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

エッジ抽出 1階微分の応用先の一例 ロボットビジョンなどの認識に応用できる 高さとして 表示した例 エッジを抽出して 赤い点で表示した結果 入力の 距離画像 エッジを抽出して 赤い点で表示した結果

1D: 1階微分値 右上がり(正)か右下がり(負)か? 接線 の傾き

1D: 1階微分の近似 平均値をとる (足して2で割る) 辺上の微分は 直線の傾き

1D: 1階微分の近似を確認 2次までのテイラー展開により確認 両辺を引いて 前ページの式を得る

不等間隔1Dデータ: 1階微分の近似 もしデータの間隔が同じでなくても、 テイラー展開を知っていれば対応できる もしデータの間隔が同じでなくても、 テイラー展開を知っていれば対応できる 左右の傾きの平均でも応用先によってはOK 両辺を引いて 2階微分の項を消す

1D:エッジ抽出 エッジ:値が急激に変化するところ 1階微分値の絶対値が極端に大きい

1D:エッジ抽出の結果 閾値以上であればエッジと判断する 閾値 = 10 閾値 = 1

2D: 1階微分値 横方向と縦方向の2つがある (偏微分) 横方向の断面上の 曲線の傾き: 縦方向の断面上の 曲線の傾き:

2D: 1階微分の近似 1次元の場合と同じ 左右の差分 上下の差分

ここに立ったときに 最も坂道が急になる xy方向 2D: 勾配ベクトル 値が最も増える方向 横方向と縦方向の傾きをベクトルとしたもの ここに立ったときに 最も坂道が急になる xy方向 2本の接線が のる平面 (接平面)

2D:エッジ抽出 勾配ベクトルの長さが極端に大きいところ 白黒が極端に 変わっているところ バンプに なっているところ

プログラミング課題 3 prog2-1を使う: 1階微分値を計算してエッジを検出する関数 “detectEdge” を完成させよ エッジになった頂点を赤く描画するための関数 “drawEdge” を完成させよ prog2-2を使う: 3.勾配の長さを計算してエッジを検出する関数”detectEdge” を完成させよ

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

平滑化 (ノイズ除去) 2階微分の応用先の一例 画像表示 高さ表示

1D: 2階微分値 下に凸(正)か上に凸(負)か? (曲率とは違うので注意) 上に凸 下に凸 変曲点

1D: 2階微分の近似 1階微分を もう1回微分する 辺上の微分は 直線の傾き

1D: 2階微分の近似を確認 2次のテイラー展開により確認 両辺を足して 前ページの式を得る

(単位時間あたりの温度の変化は温度の2階微分に比例する) 1D:平滑化 凹凸を減らしていくこと 最も単純な方法として、     熱拡散のシミュレーションをする方法がある (単位時間あたりの温度の変化は温度の2階微分に比例する) 上に凸なので負側に動く

1D:平滑化の結果 どんどん溶けてく感じ。

2D: 2階微分値 横横、縦縦、横縦(=縦横) の3つがある 横横 縦縦 横縦 横方向の断面上の 曲線の凹凸: これの 意味は後で (斜めの凹凸 ではない) 横縦 横方向の断面上の 曲線の凹凸: 縦方向の断面上の 曲線の凹凸:

2D: 2階微分の近似(横横、縦縦) 1次元の場合と同じ 左右の和との差分 上下和との差分

2D: 2階微分の近似(横縦) 横方向で微分したものを縦方向で微分する - + - +

2D: ラプラシアンの近似 縦方向と横方向の凹凸の平均値 +1 +1 -4 +1 +1

平均的に下に凸な所は上へ、上に凸な所は下へ 2D:平滑化 熱拡散方程式 平均的に下に凸な所は上へ、上に凸な所は下へ

安定条件の基で 任意の小さな数値でよいので、 とする 2D:平滑化の簡単化 隣4つの平均への更新へ書き直せる 安定条件の基で 任意の小さな数値でよいので、        とする

プログラミング課題 4 prog2-1を使う: ‘s’ キーを押すと呼ばれる 平滑化のための関数 smooth を完成させよ  (前ページの簡単化は1Dの時もできる) prog2-2を使う: 2. ‘s’ キーを押すと呼ばれる 平滑化のための関数 smooth を完成させよ

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

ラプラス平滑化の問題点 隣との平均化を繰り返してるだけ エッジがなくなる 最後には平らになってしまう 繰り返し回数

エッジを保存するには? 平均を計算する時に重みを付ける (Perona さん & Malik さん 1990年のアイディア) 隣との差が大きい → 重みは小 隣との差が小さい → 重みは大 重み大 重み小

1D: エッジ保存平滑化 重み関数 w は反比例するような関数 重み大 平均後は 左側に近い値になる 重み小

重み関数の例 2乗に反比例 (分母の1はゼロ割を防ぐため) その他、ガウス関数を使ったものも有名 (Bilateral フィルタ) S はパラメータで,大きくすると敏感になる

1D: エッジ保存平滑化の結果

2D: エッジ保存平滑化 斜めを入れて 8つの平均でも OK

2D: エッジ保存平滑化の結果 入力 30回 100回 200回

プログラミング課題 5 prog2-1を使う: ‘a’ キーを押すと呼ばれるエッジ保存の平滑化のための関数 adaptiveSmooth を完成させよ prog2-2を使う: 2. ‘a’ キーを押すと呼ばれるエッジ保存の平滑化のための関数 adaptiveSmooth を完成させよ

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

1階微分の大きさを使った エッジ抽出の問題点 パラメータ設定が微妙 エッジが太い 画像表示 高さ表示

エッジ抽出の改善策 傾きの大きさが極大になるところをみつける Canny さん1986年のアイディア 傾きの 大きさ

1D: Canny エッジ抽出 傾きの大きさが両側の隣よりも大きい 傾きの 大きさ

2D: Canny エッジ抽出 勾配ベクトル方向の断面曲線上で 勾配の大きさが極大になるところを探す 勾配ベクトル :

2D: Canny エッジ抽出の計算方法 勾配方向に直線を延長し、極大をチェックする

プログラミング課題 6 prog2-1を使う: ‘n’キーを押すと呼ばれる Canny エッジ検出をする関数 “CannyEdgeDetector” を完成させよ 52 ページの判定法のみでは小さな凹凸に敏感すぎる.この問題の解決法を考え、確認せよ。 prog2-2を使う: 3.‘n’キーを押すと呼ばれる Canny エッジ検出をする関数 “CannyEdgeDetector” を完成させよ 4. 54ページの判定法のみでは小さな凹凸に敏感すぎる.この問題の解決法を考え、確認せよ。

話の流れ 微分量計算とその応用 ラスタデータとは? 1階微分とエッジ検出 2階微分と平滑化 エッジを保存した平滑化 2階微分量を使った領域分割 より高度なエッジ検出方法 (Canny の方法)

領域分割 形状の特徴を基に      データをいくつかのグループへ分けること 例えば凹凸情報を基にする 2Dデータの高さ表示 凹凸情報

1D: 凹凸情報による分割 2階微分の符号によりグループ分けをする 下に凸が正 上に凸が負 上に凸 下に凸 変曲点

断面に現れる曲線群の2階微分の状況により、 凹凸の状況が大まかに3通りに分類できる 2D: 凹凸とは 高さ方向に平行な平面を回した場合を考える 断面に現れる曲線群の2階微分の状況により、 凹凸の状況が大まかに3通りに分類できる

※ 平らな(2階微分がゼロの)場合を入れるとさらに3通りあるが、 実画像データなどではレアなので省略 2D: 凹凸の分類 断面曲線の2階微分の正負(凹凸)により、             以下の3通りに分類できる ① いつも正 (下に凸) ②いつも負 (上に凸) ③ 符号が変わる (鞍型という) ※ 平らな(2階微分がゼロの)場合を入れるとさらに3通りあるが、 実画像データなどではレアなので省略

固有値を求めるには、 以下の方程式を λ に関して解く 2D: 凹凸を判定する方法 ヘッセ行列の2つの固有値の正負を調べる 固有値を求めるには、 以下の方程式を λ に関して解く 2×2の行列なので、2次方程式になる

2×2行列の固有値の符号の判定 2次方程式の解と係数の関係より ① かつ → 解は2つとも正 ② かつ → 解は2つとも負 2つの解(固有値)の和 2つの解(固有値)の積 2次方程式の解と係数の関係より ①    かつ → 解は2つとも正 ② かつ → 解は2つとも負 → 固有値は1つは正で1つは負

ヘッセ行列の固有値の解釈 断面曲線における2階微分の最大値・最小値 ちなみに固有ベクトルはそれら断面の方向になる 小さい固有値 に対応する 固有ベクトル 大きい固有値 に対応する 固有ベクトル 2階微分値 が最大 (大きい固有値) 2階微分値 が最小 (小さい固有値) ※ 曲面 f(x,y) において、この方法で得られた固有値の符号は、主曲率の 符号の逆である。また、その大きさは勾配がゼロの場合を除いては一致しない。

プログラミング課題 7 prog2-1: ‘h’ キーを押すと呼ばれる凹凸判定のための関数 “segment()” を完成させよ 下に凸な頂点を水色・上に凸な頂点を黄色で表示する関数 “drawSegment()” を完成させよ prog2-2: 3. ‘h’ キーを押すと呼ばれる凹凸判定のための関数 “segment()” を完成させよ

まず、一言。 この資料では、関数 f は2階微分可能であるとしています。 数学に興味のある人向けの 追加の課題 まず、一言。 この資料では、関数 f は2階微分可能であるとしています。 60ページで省略した 3つの場合について考察せよ 63ページを証明せよ ヒント :