質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

7210閲覧

OpenCvで目の画像から虹彩の外縁より内側に相当する部分を楕円で検出したい

HawksfanMori619

総合スコア9

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/01/24 07:21

編集2019/01/24 07:41

やりたいこと

OpenCV・Python初心者です。虹彩認識に関する研究のため、目の画像から虹彩に相当する部分(ドーナツ状)のみを切りだした画像を
生成したいです。
そこで、前段階として、目の画像から虹彩の外縁より内側(虹彩+瞳孔)部分を楕円で検出して、新たに画像として保存したいのですが、どのような
プログラムをつくればいいでしょうか。

現状

現段階では、画像の中からハフ変換で円検出をするところまではできていますが、プログラムのどこをどのように変えれば楕円で
検出できるかがわかりません。以下が、円検出のプログラムです。

Python

1import cv2 2import numpy as np 3 4img = cv2.imread('C:/Users/Sakamoto/UBIRIS_200_150_R/Sessao_1/1/Img_1_1_1.jpg',0) 5img = cv2.medianBlur(img,5) 6cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 7 8circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20, 9 param1=50,param2=60,minRadius=0,maxRadius=0) 10 11circles = np.uint16(np.around(circles)) 12for i in circles[0,:]: 13 # draw the outer circle 14 cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 15 # draw the center of the circle 16 cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) 17 18cv2.imshow('detected circles',cimg) 19cv2.waitKey(0) 20cv2.destroyAllWindows()

また、このプログラムの実行結果が以下です。

元画像のフォーマット

元画像のサイズは200×150で、それぞれの画像が24ビットカラーの画像とグレースケールの画像があります。
以下は元画像の例です。

補足

現段階で考えている流れとしては、
1.元画像から虹彩の外縁より内側(虹彩+瞳孔)部分を楕円で検出して新たな画像Aを生成。
2.画像Aから瞳孔部分を削除した画像Bを生成。
3.すべての元画像について1と2を行い、すべての画像Bのサイズを正規化。
というところまで行いたいと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/01/24 07:39

検出結果を描画前の元画像も貼れますか?
guest

回答2

0

Python

1circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=60,minRadius=0,maxRadius=0)`

あまりOpenCVには詳しくないのですが、まず楕円という形を想像してみてください。
楕円は2次元の場合、位置情報(x.y)と円情報(x,y)が必要です。貴方の書いている上記の関数は明らかに円の物です。楕円ですと「ellipse」などの言葉が入るはずなので、そのcv2の中身をよく探してみてはいかがでしょうか?

投稿2019/01/24 07:54

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

楕円フィッティングを行う関数があります.
検出ではなくフィッティングなので前後の処理は必要になると思いますが
http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_imgproc/py_contours/py_contour_features/py_contour_features.html#id9

投稿2019/01/24 07:46

Takaya901

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問