LoginSignup
5
14

More than 5 years have passed since last update.

ハフ変換を使った円形の物体認識

Last updated at Posted at 2017-07-28

円形の物体を認識して切り取る方法があることを知ったので、メモ。

準備編

OpenCVの準備

まずは、PythonからOpenCVを使えるようにする。

最近のAnaconda環境では、Python 3.6がインストールされるんだけれど、Python 3.6にインストールできるosx-64環境用のOpenCV3のconda パッケージが公開されていないので、Python 3.5環境を用意する。

とりあえず、condaで仮想環境を作っておいた。

conda create -n py35 python=3.5 anaconda

その後、source ~/.pyenv/versions/anaconda3-4.4.0/bin/activate py35 した後に、conda install --channel https://conda.anaconda.org/menpo opencv3 しておく。

サンプル画像の用意

ちょうど良い画像が手元になかったので、ImageJのサンプルをダウンロードして使う。

embryos_mini.jpg

実装する

http://docs.opencv.org/3.1.0/da/d53/tutorial_py_houghcircles.html を参照しながら、実装してみる。

houghcircles_sample.py
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('img/embryos.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.medianBlur(gray, 5)

circles = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT,
                                dp=1, minDist=20, param1=50, param2=30,
                                minRadius=10, maxRadius=100)
circles = np.uint16(np.around(circles))
for (x, y, r) in circles[0]:
    cv2.circle(img, (x, y), r, (0, 255, 0), 2)
    cv2.circle(img, (x, y), 2, (0, 0, 255), 3)

plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

実行結果

result.png

なかなか悪くない。param1param2の調整次第では、ちゃんと細胞をカウントできそうだ。


本日のコード

5
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
14