• ベストアンサー

円のハフ変換をC言語で

r^2=(x-a)^2+(y-b)^2 を変形して b=√(r^2-(x-a)^2)+y にしました。課題ではr=10と指定されていて、 b=√(100-(x-a)^2)+y となります。これをa,b平面にプロットすればいいのですが、 画像平面のxとyというのがいまさら分かりません。 画素値をどう入力すればいいのでしょうか。 例えば1行1列目の画素値をwとしたとき、 x[1]=w、y[1]=w とすればいいのでしょうか。 ご回答お願いします。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

それだと、(1,2)=z にしたら、x[1]=zになって、x[1]=wが上書きされてしまいますね。 幅w,高さh、座標(x,y)で、 0≦x<w, 0≦y<h, だとして ・二次元配列を使って unsinged char pic[h][w] ; /* 1画素が8bitグレースケールの場合 */ pic[y][x]=color ; ・配列を使って unsinged char pic[h*w] ; /* 全画素分 */ pic[y * w + x]=color ; のいずれかが常套手段です。 このまま使うと、メモリ不足になる、コンパイルでエラーになる、といったケースがあります。 その場合は、malloc等で動的に確保してください。

pgmbgn
質問者

お礼

分かりやすい回答ありがとうございました。前者を採用します。

関連するQ&A