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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

OpenCV

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

Python

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

Q&A

解決済

2回答

2315閲覧

画像(or csv)のあるラインの傾き(or全座標)を得たい

jasa

総合スコア17

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

OpenCV

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

Python

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

0グッド

0クリップ

投稿2019/07/17 02:17

編集2019/07/17 08:31

イメージ説明

上の黒で書いた様な2値画像(内側は黒で塗りつぶされている)が手元にあります。またこれをcsvファイルとしても持っています。

a,b,cはリストになっており、座標は分かっています。
i=0⇒右の図
i=1⇒真ん中の図
i=2⇒左の図
a点
(a[2i],a[2i+1])
b点
(b[2i],b[2i+1])
上側のc点
(c[4i],c[4i+1])
下側のc点
(c[4i+2],c[4i+3])

また下記の条件も満たします。
a[2i+1] < c[4i+1]
b[2i+1] > c[4i+3]
a,bのx座標 > cのx座標

画像内の3つの粒子に対し、それぞれ線分a,c、線分b,cの傾きを最小2乗法で求めたいです。ただ、各線分を形成する輪郭部の全座標が分かれば、そこから自分で傾きを求められるので、座標の所得方法でもいいです。
言語はpythonで、winpythonをインストールしてあるので、OpenCVなども利用可能です。

私はcsvファイルをリストl[y][x]に格納して、例えば線分a,cについては、

python

1for h in range(a[2*i+1]): 2 y=c[4*i+1]+h 3 for u in range(c[4*i]): 4 x=a[2*i]+u 5 if l[y][x] == 0: 6 xy.append(x) 7 xy.append(y) 8 break

のようにして全座標を得ようとしました。
しかし、例えば輪郭の座標が、(100,80)(101,80)と並んでいる場合、(101,80)が検出できないことに気づき生きずまりました。

どうか解決方法をご教授下さい。
宜しくお願い致します。

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

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

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

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

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

Q71

2019/07/17 13:12 編集

点a、点b はわかるとして、点c は、画像上では2点あるように見えます。どういうことでしょう?なぜ、点a, b, c, d ではなく、点a, b, c の3点なのでしょう?←a, b, は数値6個のリスト、c は数値12このリスト、ということですね? 線分a,c および 線分b,c は、「線分」という名称もそうですが、図でも直線になっているようです。だったらⅡ転換の直線を求める、ということではないでしょうか。「輪郭線」という言葉が出てきていますが、求めたいのは「弧a, c の接線の傾き」ですか? Ⅱ値画像であるなら、(a[0], a[1]) から上下に色を調べていくと、白と黒の境目があるはずなので、そこが X座標 a[0]+1 における Y 座標になりますよね。c[0] まで調べていけば、点a から点c の間の座標は全てわかるのではないでしょうか。
jasa

2019/07/17 13:46

ご質問ありがとうございます。 まずa点とb点は人が線分acと線分bcの端となる所をそれぞれ選んで座標を決定しています。そしてc点は粒子の情報から定めています。この過程で1つのリストに格納されているのでc[]は12個のリストとなっています。質問とそれると思い今回は省略したのですが、実際はif文でc[4*i+1],c[4*i+3]のどちらが大きいか判断し、a点とb点のどちらと線分を形成するかを調べています。 線分acは実際には直線なのですが、動いているものを撮影しているため、a点とc点だけから線分acの傾きを求めるのは乱暴となってしまいます。そこで線分acを形成する全ての座標を抽出し、最小2乗法で線分acの傾きを決定しようとしています。 「Ⅱ値画像であるなら」以下が理解できないのですが、詳しく教えていただけないでしょうか? 下の四角が2値画像の各ピクセルとします。 □□□□□□□■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる □□□□□□■■同上 □□□□■■■■行で走査すると左端から2つ目の輪郭を形成する黒点座標が得られない(列ならOK) □□□■■■■■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる □□□■■■■■列で走査すると左端から2つ目の輪郭を形成する黒点座標が得られない(行ではOK) □□■■■■■■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる このようにキャッチできない座標が出てしまって困っています(質問文のコードは行で走査しています)。
guest

回答2

0

ベストアンサー

「Ⅱ値画像であるなら」以下が理解できないのですが、詳しく教えていただけないでしょうか?

下の四角が2値画像の各ピクセルとします。
□□□□□□□■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる
□□□□□□■■同上
□□□□■■■■行で走査すると左端から2つ目の輪郭を形成する黒点座標が得られない(列ならOK)
□□□■■■■■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる
□□□■■■■■列で走査すると左端から2つ目の輪郭を形成する黒点座標が得られない(行ではOK)
□□■■■■■■行で走査しても列で走査しても輪郭を形成する黒点座標が得られる
01234567
このようにキャッチできない座標が出てしまって困っています(質問文のコードは行で走査しています)。

0行1列目・・・□
0行7列目・・・■輪郭
で、次に「注目行(今は0行目)-1行同列が、白か黒か」を調べればいいのでは?

3行4列目・・・■輪郭
ここで4行目に行くのではなく、2行4列目を見る・・・□なので、3行4列を輪郭と確定
3行5列目・・・■輪郭、2行5列目・・・□なので、3行5列を輪郭と確定
3行6列目・・・■輪郭、2行6列目・・・■なので輪郭ではない
4行0列目・・・(以下続く)

投稿2019/07/19 13:02

Q71

総合スコア995

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

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

jasa

2019/07/21 02:31

指針を示して下さりありがとうございました。
guest

0

質問文の前半の意味がさっぱりですが,
要は,【2値画像の輪郭上の2点の座標(aとかbとかいう)が与えられたとき,その間にある輪郭座標群が得られれば良い】
というだけの話ですか?

もしそうであれば,2値画像の輪郭追跡を行えば良いだけではないでしょうか.
(aとかbとかが輪郭上の点ではないとしても,それらを用いて調査すべき領域を決定できるなら,同じ話)


  • 輪郭追跡でやる場合:「画像 輪郭追跡」とかで検索すれば詳しい方法の話が見つかるかと.
  • 調査領域内走査で座標を拾い集める場合:各座標位置が「輪郭」か否かを決定しさえすればよい.「エッジ」で良いなら,適当な方法でエッジ検出してから走査すれば楽か.

投稿2019/07/17 02:31

編集2019/07/17 02:38
fana

総合スコア11632

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

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

fana

2019/07/17 02:43

あらかじめ該当域の輪郭形状がほぼ直線的なのだという前提があって,欲しいのが傾きだけなら,データとして輪郭の座標ではなく輝度勾配方向を収集するという方向もあるかも.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問