2018年11月15日 更新

等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 2

前回の記事「等角写像による画像の変換〜Schwarz-Christoffel 変換〜part 1」の続きです. 実際に実装をして,写像を確かめてみます.

1,699 view お気に入り 0

今回の記事は,前回の記事の続きになります. 前回の記事は下のリンクからご確認ください.

1. Schwarz- Christoffel 変換

Schwarz - Christoffel 変換とは,半平面を等角写像に基づいて三角形,四角形などの多角形に変換する写像です.具体的な変換式は以下のようになります.

Schwarz-Christoffel 変換

$w$平面上の多角形に関して,その各頂点の内角を順番に $\alpha_1 \pi, \alpha_2 \pi,\cdots, \alpha_n \pi$とするとき \begin{align} \frac{dw}{dz} = \gamma(z-a_1)^{\alpha_1 - 1}(z-a_2)^{\alpha_2 - 1} \cdots
(z-a_n)^{\alpha_n - 1} \end{align} によって,半平面から$n$角形に写される.


今回の場合,四角形に写すことを考えていますので,$\alpha_1 = \alpha_2 = \alpha_3 = \alpha_4 = 1/2$を代入し,さらに$a_1=-1/k, a_2 =-1, a_3 = 1, a_4 = 1/k$とすると, \begin{align} \frac{dw}{dz} =\frac{\tilde{\gamma}}{\sqrt{(1-z^2)(1-k^2z^2)}} \end{align}

となります.これは,ヤコビの楕円関数と深く関係しています.詳しくは以下のページをご覧ください.

https://ja.wikipedia.org/wiki/ヤコビの楕円関数

2. 今回のフローチャート

今回は,正方形から円への写像を実装します.具体的には,

  1. Schwartz- Christoffel の逆変換により,正方形を半平面に
  2. 半平面を円に

の方法によって行います.

四角形から円に写す等角写像

四角形から円に写す等角写像

Schwarz-Christoffel 変換と半平面から円に写す写像を組み合わせることで,四角形から円への写像を実現する.

3. 実装

それでは実装をしていきます.まずは,以下のように格子点を定義しておきます.
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
import scipy.special
パッケージのインストール.py
# Schwarz Christoffel Mapping

## square
s = 1
m = 1000
x_m = np.linspace(-s,s,m/50)
x = np.linspace(-s,s,m)

for x_i in x_m:
    plt.plot(x_i*np.ones(m),x,color='black')
    plt.plot(x,x_i*np.ones(m),color='black', linestyle='dashed')    

plt.gca().set_aspect('equal', adjustable='box')

sc = 1.2
plt.xlim(-s*sc,s*sc)
plt.ylim(-s*sc,s*sc)
plt.show()
格子点定義.py
 (5094)

次に,必要となる楕円関数などを定義します.python のscipy の関数は引数として複素数値を受け入れないので,級数を用いて定義し直します.
34 件

関連する記事 こんな記事も人気です♪

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

画像処理の一つ,モルフォロジー変換をPython と OpenCVのライブラリを用いて実装し,それを2値画像に対して適用します.
三好 裕之 | 2,126 view
Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

本記事では,IEEE Transactions on Pattern Analysis and Machine Intelligence に投稿された,「Extracting Straight Lines」の論文を説明し,実装を行います.1986年に投稿された少し古めの論文ですが,アイディアは非常に面白いです.
三好 裕之 | 963 view
ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理を解説します.今回は,代表的な空間フィルタリングをpythonで実行してみました。
亀谷 桃子 | 1,906 view
量子アニーリングを駆使して数独を解いてみた

量子アニーリングを駆使して数独を解いてみた

先日,量子アニーリングの勉強会に参加して来ました.そのアウトプットとして,今回,数独ソルバーを作ってみます.
井上 大輝 | 965 view
等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像による画像の変換〜Schwarz-Christoffel 変換〜 part1

等角写像の一つであるSchwarz Christoffel 変換を用いて,画像の変換をしてみます. python によるコードも記載しております. 画像はhttps://uk.mathworks.com/help/images/examples/exploring-a-conformal-mapping_ja_JP.html より.
三好 裕之 | 1,223 view

この記事のキーワード

この記事のキュレーター

三好 裕之 三好 裕之