14歳の自分に衝撃の事実を告げてください

C言語で画像を極座標変換するソースコードをおしえていただけないでしょうか。512*512 32bitグレースケール(float)画像です。C初心者なので難しくて困っています。よろしくおねがいいたします。

A 回答 (3件)

単純に考えれば、


r = sqrt( (x * x) + (y * y) );
θ= atan2(x, -y);

中心座標を合わせることとか、(x,y)=(0,0)の場合とかも考えなければならない。
あと、rとθが実数となってしまうので、取り組んでいる問題によっては、rとθを整数に合わせるように補完処理が必要かも。
    • good
    • 1

OpenCVについて。



RAWデータでうまくいかないのは、cvLoadImageがRAWデータに対応していないからです。

・cvCreateImageでIplImageを新規作成
→各画素にRAWデータから読み込んだ値を設定
と、cvLoadImageに相当する操作をすれば、あとはサンプルのがそのまま使えると思いますが。
    • good
    • 0

画像を極座標変換って、画像を回転したいのでしょうか?


"画像" "回転" "ソース" "アルゴリズム" などの語句で検索すると色々見つかります。
http://homepage2.nifty.com/tsugu/sotuken/rotation/
http://msdn.microsoft.com/ja-jp/academic/cc998606
http://www.interq.or.jp/ox/pokumura/extreme/grap …
http://www.groovy-number.com/java/sample/ImageRo …
ここで、C言語まで検索条件に加えると見つかるサイトが少なくなってしまいます。
C++,C#,Java,VB,Pascal など多少は他の言語も読めるようにして、
アルゴリズムを参考にするとか変換できれば、かなり応用できるようになりますね。
    • good
    • 0
この回答へのお礼

ありがとうごいます。行いたいのは回転しょりではなく、入力画像を中心が原点の極座標とみなして,出力画像の X 方向を角度,出力画像の Y 方向を長さに相当するように変換することです.512*512 32bitグレースケール(float)画像です。扱うのはヘッダ無しRAWデータです。例で言うと以下のサイト(OpenCV) http://opencv.jp/opencv-1.0.0/document/opencvref … にあるような実空間上の対数極座標変換です。ここでのopenCV関数(cvLogPolar)を用いるとjpg bmp tiff形式などは成功しましたが、RAWデータは扱えないコードのようです。 RAWデータのサンプルがなかなか見つけられずプログラマーのかたに願いした次第です。

お礼日時:2011/02/27 10:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報