タグ

射影変換に関するmakun2のブックマーク (8)

  • ホモグラフィ - Shogo Computing Laboratory

    ホモグラフィとは、平面を射影変換を用いて別の平面に射影することを言います。 二次元画像の変形などに使われます。 二次元画像の変形方法としてはアフィン変換がありますが、ホモグラフィはその拡張です。 アフィン変換は長方形を平行四辺形に変形させることしか出来ませんが、 ホモグラフィを使えば台形へ変形させることができます。 射影変換 ホモグラフィについて考える前に、 ホモグラフィの基的な考え方である射影変換について考えましょう。 コンピュータで3Dを扱う場合、コンピュータ内部では3Dをごちゃごちゃいじったとしても、ほとんどの場合最終的な出力は画面(2D)です。 そのため、3Dを2Dに変換する作業が必要となります。 それを実現するのが射影変換です。 平面上の点をに変換することを考えます。 このときホモグラフィ変換は次式で表されます。 ここで、行列Hはホモグラフィ行列といい、この変換を決めるパラメー

  • 第05回 平滑化

    平滑化とは、おおざっぱにいうと画像をぼやけさせる処理のことである。 この処理は、単にぼやけた画像を作りたいときにつかえるだけでなく、暗い場所で撮影したときに発生する高感度ノイズと呼ばれるザラザラのノイズを除去するのにも使える。 プログラムを実行すると実行画面上に元画像にザラザラのノイズを加えたものが表示される。 さらに実行画面上でクリックすると、dataフォルダに7つの画像が作られる。 コンソールに「完了」が表示されてからキーボードの0~6のキーを押すとこれらの画像が画面に表示される。 (クリックだけですべての画像が作成されるので、キーボードを使うのは結果確認のためだけ) キー 画像 意味 特徴

  • 射影変換

  • 最小二乗法によるホモグラフィ行列の計算(DLT法) - Qiita

    ホモグラフィ行列と、画像座標の射影変換は、以下のように表されます。ホモグラフィ変換(射影変換)は9つの成分を自由に決められますが、今回は回転と平行移動だけのアフィン変換を考えます。 H = \lambda\left( \begin{array}{ccc} \cos \theta & -\sin\theta & t_1 \\ \sin\theta & \cos\theta & t_2 \\ 0 & 0 & 1 \end{array} \right) \\ \vec{x}_1 = (x_1,y_1,1)^T,\ \vec{x}_2 = (x_2,y_2,1)^T \\ \vec{x}_2 = H\vec{x}_1 ここで、画像座標$\vec{x}_1,\vec{x}_2$は同次座標系を用いています。$t_1,t_2$は平行移動を表し、左上の2×2は回転行列です。また、拡大、縮小すなわちスケール

    最小二乗法によるホモグラフィ行列の計算(DLT法) - Qiita
  • Swift:CALayerや画像に射影変換を適用する - Qiita

    はじめに CAlayerや画像に射影変換を適用する時のTipsを残す. 併せてこちらの記事も参照するといいかもしれない. CALayer編 let layer = CALayer() self.view.wantsLayer = true //macOSだと必要 self.view.layer?.addSublayer(layer) //親のビューは状況による layer.frame = self.view.bounds //layerに何かしらコンテンツを入れる let rect = CGRect(x: 0, y: 0, width: W, height: H) // コンテンツの大きさ let filter = CIFilter(name: "CIPerspectiveTransformWithExtent")! filter.setValue(CIVector(cgRect: rec

    Swift:CALayerや画像に射影変換を適用する - Qiita
  • Swift:射影変換を行う - Qiita

    はじめに 画像処理で射影変換が必要になったのだが,それだけのためにOpenCVを使うのもなんだかなぁと思い,Swiftで射影変換を行うコードを実装した. 実装にはAccelerate.frameworkを使ったため,非常に高速である. ソース import Foundation import Accelerate class Homography { public func transeform(points: [CGPoint], to: [CGPoint], from: [CGPoint]) -> [CGPoint] { let td: [Double] = [Double(to[0].x), Double(to[1].x), Double(to[2].x), Double(to[3].x), Double(to[0].y), Double(to[1].y), Double(to[2]

    Swift:射影変換を行う - Qiita
  • 射影変換 (Homography) - jsdo.it - Share JavaScript, HTML5 and CSS

    var IMG_URL = 'http://jsrun.it/assets/4/W/u/U/4WuUH.png', SPACE = 10, SRC_WIDTH = 295, SRC_HEIGHT = 295, DST_WIDTH = 465 - SRC_WIDTH - SPACE * 3, DST_HEIGHT = 465 - SRC_HEIGHT - SPACE * 3; var img, canvas, context, points, srcImageData, draggingPoint = null; window.addEventListener('DOMContentLoaded', function() { canvas = document.getElementById('c'); context = canvas.getContext('2d'); srcBounds

    射影変換 (Homography) - jsdo.it - Share JavaScript, HTML5 and CSS
  • 射影変換(ホモグラフィ)について理解してみる - デジタル・デザイン・ラボラトリーな日々

    「3Dを基礎から勉強する フラットシェーディング」の記事を書いて、次は立方体のテクスチャマッピングに取り掛かろうと思ったんですが、ふとアフィン変換で台形は出来ないってことを書いたことを思い出したんです。テクスチャマッピングについては、「テクスチャマッピングを理解してみる」で三角形に分割することで台形にすることが出来たのですが、分割しなくても台形にするには「射影変換(ホモグラフィ)」すれば出来ることが分かりました。 早速、射影変換の調査に取り掛かったのですが、これが自分の理解度が足りないのか1ヶ月以上経って、やっとこうして記事を書こうと思うところまで理解が進んだところです。 まだ理解が途中段階であるため、理解した現状まで書いていきます。 射影変換(ホモグラフィ)には、下記の変換式があります。 変換式 変換式は以下の通り。 u = (x*a + y*b + c) / (x*g + y*h +

  • 1