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

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

新規登録して質問してみよう
ただいま回答率
85.46%
OpenCV

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

Python

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

Q&A

解決済

1回答

1052閲覧

円に変換したい 画像処理 二値化画像 python

manman12

総合スコア3

OpenCV

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

Python

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

0グッド

0クリップ

投稿2021/09/10 04:59

前提・実現したいこと

面積検出を行うため,opencvを使いながらプログラムを書いています.
cv2.contourArea() 関数を使って求めているのですが,内部の白い部分の面積が知りたいです.
内側の輪郭がギザギザしてしまっているのでどうにか滑らかに,円に近似するような形にして処理をしたいと考えています.

試したこと

ギザギザしているので各方位の半径を求めて,最も頻出頻度の高い半径を使って円を作ることができればそれっぽくなるのではないかとアイデアはあるのですがプログラムに起こすことができませんでした.

どのような形でもこの図のように処理できる方法があれば教えていただきたく思いました.
よろしくお願いします.

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

円の当てはめを行えばどうでしょうか?

OpenCVには fitEllipse (やその亜種?)がありますが,
楕円当てはめであって,真円に限定したりはできないようにも見えるので,
「真円」だとしたいなら,自前で当てはめ処理を書けばよいのではないかと.
(あと,状況的に,内側の境界線だけでなく外側の境界線も用いて…等の工夫も考えられるかもですし)

最も頻出頻度の高い半径を使って…

というアイデアに近いのはハフ変換になります.
OpenCVには HoughCircles があります.

投稿2021/09/10 05:16

編集2021/09/10 05:19
fana

総合スコア11708

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

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

manman12

2021/09/14 02:23

回答してくださり,ありがとうございます! 上手くいきそうです!
fana

2021/09/14 02:32 編集

結果にどう響くか(話的にやっていいのか否か)はわかりませんが, 事前にモルフォロジで「ギザギザ」をある程度潰すような話を検討してみても良いかもしれません. たとえば,示された画像の円の外周の左下とか右下あたりに見られる細くて深い切込みみたいなのが 円の推定処理で強い影響を与える場合,あらかじめそういった箇所をつぶすことで,そのことを緩和できるかもしれません. (たとえば,ギザギザした輪郭上の点群をそのままシンプルな最小二乗法に持ち込むようなことをすると,こういう外れ値が強い影響力を持つかもしれない)
fana

2021/09/14 02:36

あるいは,円の推定処理次第では, ある程度ぼかした絵を相手にするような話も考えられるかもしれない.
manman12

2021/09/14 05:50

なるべく二値化画像を加工することは避けたいですが,外れ値の影響力が強かった場合,仰る通り尚更上手く処理できないのでモルフォロジであったりぼかしなんかを追加して検証してみようと思います! 丁寧に本当にありがとうございます!
yominet

2021/09/14 10:58

クローンのMatをつくってそちらを加工して円推定するのがいいと思います これなら元画像は維持できます。 また、今回のような処理の場合、 白黒反転して「白い輪っか」にし、細線化(このときに太さを推定)したものを円推定するという手もあります。
fana

2021/09/15 00:50

> 細線化 アルゴリズム次第なのかもしれませんが,これ余計なヒゲとかが出たりしませんかね.
manman12

2021/09/21 02:57

様々なご意見本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問