• ベストアンサー

ある領域と直線の交点を求めたい

白い背景の中に不規則な形をした黒いエリアがあったとします。 白いエリア内のある点から黒いエリア内のある点に向けて直線を引いた時、 その直線と色の境目にできる交点の座標を調べるにはどのようにすればいいのでしょうか? 色情報は取得済みで、関数に座標 x と y を渡すと 0(白) か 1(黒) が返ります。 交点の座標は整数で、色の切り替え部分の白側の座標とします。 黒いエリアはひとつのまとまりで、ドーナツ状に穴が空くことはありません。 言語はC#を予定していますが概念がわかれば良いので他の言語でも構いません。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8015/17132)
回答No.4
django13
質問者

お礼

最終的にこちらのアルゴリズムを使って直線が通る座標を取得し、 色の境界を検出する方式にしました。 ありがとうございます。

その他の回答 (3)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

そう、そこがプログラミングの腕ってやつです。 そういう場合は個別に判断して1/(xの係数)ずつ増やすとか、 縦棒(x=1)というようにyが出てこない場合(xの係数が0)はどうするとか考えるのです。 (1,5)から(1,10)ならxを1にし、yを1ずつ増やすことで解決します。 プログラムを組んでいると例外条件が山ほど出てきます。 プログラム=例外の山って感じでプログラムは例外処理のほうがはるかに多いですよ。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.2

>始点から終点に向かって1ピクセルずつ線を伸ばしていく雰囲気が近いかもしれません。 だから、関数がわかっているんだからxを始点から終点に1ずつ増やしていき (始点のx>終点のxなら1ずつ引いていく)、yを求める。 で、その位置が白か黒かって判断するんだよ。

django13
質問者

補足

仮にy=10xほどの関数だった場合、xを1ずつ増やしていくと交点のyは10の倍数しか得られません。あるいはxが同じ縦一直線の場合などはどのように判断すればいいのでしょうか。

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

それは数学の世界ですね。 直線の開始位置と終点位置がわかっているのですから、 直線の関数を割り出し、その上の点が白か黒か判断すればいいことになりますね。 あと、その直線と色の境目にできる交点というのは何百、何千という数になることもお忘れなく。

django13
質問者

補足

求める座標は整数ピクセルですので近似値ということになるかと思います。 白黒二値のビットマップ画像上の座標を想定しています。 始点から終点に向かって1ピクセルずつ線を伸ばしていく雰囲気が近いかもしれません。

関連するQ&A

  • 2直線の交点 

    2直線X+2y-3=0、2X-3y+8=0の交点と点(1、-1)を通る直線の方程式を求めよ。 私の考え方  まず連立方程式で2つの式を解いて二直線の交点の座標は(-1、2)であって(1、-1)をとおるから  y+1= -2分の3(x+1)であってる?でこのあとの回答が導き出せません。このあとどんな計算をすればよいのですか?     

  • 2つの円の交点を通る直線の方程式

    2つの円の交点を通る直線の方程式は、2つの円の方程式を各辺で引けば求められると習いました。 僕自身円が苦手なので想像しにくく、まだよくこの感覚を掴めてはいないのですが、、 2つの直線y=4x+10とy=3x+5があり、この直線が交わる点の座標は {y=4x+10 {y=3x+5       として 交わるためにyが等しいから 4x+10=3x+5                   x=-5      代入して y=-10 と求めているのですが、2つの円の交点を通る直線の方程式の求め方も、根本的にはこれと同じだと考えてよろしいでしょうか? ご回答お待ちしております。 よろしくお願いします。

  • 2直線の交点の軌跡

    2直線の交点の軌跡 mが実数全体を動くとき、次の2直線の交点Pはどんな図形を描くか。 mx-y=0・・・(1)、x+my-m-2=0・・・(2) 指針、(1)、(2)を連立して解くと x=m+2/m^2+1,y=m(m+2)/m^2+1 この2式からmを消去してx、yの関係式を求めようとするのは計算が大変。 そこで、交点Pの座標を(x,y)とすると(x,y)は(1)、(2)を同時に満たすから、(1)、(2)はmをつなぎ文字とみた軌跡の条件式である よって、(1)、(2)から直接mを消去する。なお、(1)、(2)が表さない、直線があるから、求めた図形から、除外する点がでてくることに 注意する。 教えてほしいところ 解答では、(1)の式を変形して(2)に代入していたんですが、(1)を満たすような(x,y)と(2)を満たすような(x,y)は異なりますよね(必要十分でない)?? ですから、代入して(1)のx,yと(2)のx,yをごちゃごちゃにするのは駄目なのでは??

  • 「2直線の交点は連立方程式の解」となることの説明

    はじめまして、現在中学2年生の数学教師をしている者です。 先日、「2直線の方程式が与えられていてその交点を求めさせる」という問題を教えていたのですが、 生徒の中に「2直線の交点は連立方程式の解」となることが理解できない者が数名おりました。 そこで、下記の方法で理解してもらおうとしました。 ------------------------------------------------------------------------------------------------ (1)まず、座標上で任意の点(例えば(1,2))を選択しそれを点Aとします。 (2)この点Aを通る直線の方程式(1)(2)を何でも良いので2つ作り、座標上に書いてもらいます。 ここまでで、(1)(2)の交点が間違いなく点Aであることを理解してもらいます。 (3)次に、機械的に方程式(1)(2)の連立方程式の解を求めてもらいます。 (4)(3)の連立方程式の解が自分の作成した座標における直線(1)(2)の交点Aであることを確認してもらいます。 ------------------------------------------------------------------------------------------------ 上記の説明の結果、交点の座標と連立方程式の解が一致することは一応解ったようでした。 しかし、それが何故一致するのかが理解できないようで、消化不良といった風でした。 問題集や参考書を見ても「交点は連立方程式の解であり」と当然の様に書いていますが、 それを更に突き詰めるような方法は記載されていませんでした。 私自身は一次方程式の連立方程式の解は2つの一次方程式の唯一「一致するx,yの組み合わせ」だということをグラフで視覚化すると交点という表現になる。 という理解ですが、 おそらく感覚的な理解が必要な部分なのではないかと思っています。 どなたかこの部分を理解させる良い方法をご存知の方がいらっしゃったら教えて頂きたいと思います。 指導方法に関するアドバイス何卒宜しくお願いいたします。

  • 円と直線の交点間の距離

    円x^2+y^2=10と直線y=ax-5(aー1)について次の各問いに答えよ (1)これらが2点P、Qで交わるような定数aの値の範囲を求めよ (2)PQ=2√5となるようなaの値を求めよ (1)はなんとか分かりました。円の方程式に直線の方程式を代入して整理したあと判別式D>0となるように延々と計算してやっと解けました (2)なんですがまず交点P、Qの座標を求めようとしても途中で計算が複雑になりすぎて最後まで計算できません。無理やりにでも座標を求めるべきなんでしょうか?

  • 3次元空間での2直線の交点の求め方

    悩んでおります.御力添えを願います. 以下の条件下にて,2つの直線式を求め,その交点を求めようとしております. 1.点p(a0,b0,c0)と点q(a1,b1,c1)の座標は既知. 2.点s(d,e,f)は,座標は未知であるが,点p,点qへ向けて2つの直線を延ばしており,それぞれの直線の傾きが既知. 以上の条件をもとに,点s(d,e,f)の座標を求めようとしています. 私の考えた手法は,以下の物ですが上手くいきません. 1.点sから伸びる2つの直線の方向余弦を求める. 例)vx = r * cosα,vy = r * cosβ, vz = r * cosγ (上記の様に2点へと伸びる直線の方向余弦をそれぞれ求める) 2.求めた方向余弦と,点p,点qを用いて2つの直線式を表す. 例)x = a0 + vx0 * t, y = b0 + vy0 * t, z = c0 + vz0 * t x = a1 + vx1 * s, y = b1 + vy1 * s, z = c1 + vz1 * s    3.誤差を考慮し,2直線間の距離が1番小さくなる2点を求める. 例)(距離)^2 = {a0 + vx0 * t - a1 - vx1 * s}^2 = {b0 + vy0 * t - b1 - vy1 * s}^2 = {c0 + vz0 * t - c1 - vz1 * s}^2     上記の式をs,tに関して偏微分してやり,それぞれを0として連立 方程式を解き,s,tを求める.   求めたs,tを各直線式に代入してやり,2直線間の距離が最も短く なる2点を求める. 4.その2点の線分上の中点を求め,点s(d,e,f)とする. 上記手法で求めようとしましたが,どうも点sの座標が求まりません. 点sで方向余弦を求めるのが駄目なのでしょうか? 2直線間の距離が最も短くなる2点の求め方が駄目なのでしょうか? 幾何学初心者なため,混乱しております. 宜しくお願いいたします.

  • 2つの直線の距離

    2点P(2,1,3)とQ(1,2,1)を通る直線と、2点R(-1,-2,-2)とS(1,-4,0)を通る直線の最短距離を求めよ という問題があるのですが、それぞれの直線の方程式は出せましたが、距離を出す方法が分かりません。二つの直線に垂直な直線を出して交点の座標から出せるかな?と思いましたが・・・なんとなく違うような気がしています。 もっと良い回答はないでしょうか?

  • 2直線の問題

    2直線y=x+3とy=-2x+12の交点をAとする. また.この2直線とx軸との交点をそれぞれBCとします. (1)点Aの座標を求めてください (2)△ABCの面積を求めてください (3)点Cを通り.△ABCの面積を2等分する直線の式を求めてください こうゆう問題がでたら自分はすぐにあきらめてしまいます・・・・ 分かる方教えていただけませんか? お願いします

  • 点と直線

    (1) 2点(-1,4)、(2,3)から等距離にある、直線 y=4x上の点の座標 (2) 3つの直線  4x-y+7=0 4x-5y-13=0  4x+3y-5=0 が囲む三角形の重心の座標と面積 2直線 2x+y-1=0、3x-2y+2=0 の交点をPとする。 直線の方程式を求めよ (1) Pを通り直線 3x-y=0 に平行な直線 (2) Pを通り直線 x+2y=0に垂直な直線。 解き方を教えてください。 おねがいします

  • 点と直線

    点と直線の問題です (1) 2点(-1,4)、(2,3)から等距離にある、直線 y=4x上の点の座標 (2) 3つの直線 4x-y+7=0 4x-5y-13=0 4x+3y-5=0 が囲む三角形の重心の座標と面積 2直線 2x+y-1=0、3x-2y+2=0 の交点をPとする。 直線の方程式を求めよ (1) Pを通り直線 3x-y=0 に平行な直線 (2) Pを通り直線 x+2y=0に垂直な直線。 解き方を教えてください。 おねがいします 補足 (1)は(2,8) (2)は(-2/3,-1) 16 下は(1) y=3x+1 (2) y=2x+1です お願いします。

専門家に質問してみよう