• 締切済み

ヒルベルト曲線のプログラムについて(C言語)

私は今画像の圧縮の勉強でヒルベルト曲線を勉強していますが、その曲線の座標を示すプログラムが書けません。教えて欲しいです。またその復元させるプログラムも教えて欲しいです。

みんなの回答

回答No.1

アルゴリズムは分かっていますか? いろいろな手法があると思いますが、例えば。 画像を4分割して A B C D としたとき、再帰を使って次の変換を最小画素まで繰り返せばいいと思います。(最初はA→B) A→B : A→C→D→B B→D : B→A→C→D D→C : D→C→A→B C→A : C→D→B→A A→C : A→B→D→C C→D : C→A→B→D D→B : D→C→A→B 「復元させる」の意味がよくわかりません。 曲線を画面に表示させたいのでしょうか。。。

関連するQ&A

  • ヒルベルト曲線のプログラム(C言語)

    私は画像の勉強をしています。それで従来の水平スキャンではなく2次元相関をたもったまま1次元配列に変換できるヒルベルトスキャンとBWT変換とエントロピー符号化を用いて圧縮する方法を勉強しています。しかしヒルベルトのほうができなくて困っています。 プログラムの実行結果でヒルベルト曲線通る座標を示すプログラムを教えてください。だいたいは書けましたがうまくいきません。プログラムは #include<stdio.h> int x,y; main() { int n; void RUL(int n),DLU(int n),LDR(int n),URD(int,n); scanf("%d",&n); printf("#位相%dのヒルベルト曲線\n",n); x=0; y=0;printf("%d\n",x,y); RUL(n);printf("\n"); } void RUL(int n) { if(n<=0) {return;} URD(n-1);x=x+1;printf("%d %d\n",x,y); RUL(n-1);y=y+1;printf("%d %d\n",x,y); RUL(n-1);x=x-1;printf("%d %d\n",x,y); DLU(n-1); } void DLU(int n) { if(n<=0) {return;} LDR(n-1);y=y-1;printf("%d %d\n",x,y); DLU(n-1);x=x-1;printf("%d %d\n",x,y); DLU(n-1);y=y+1;printf("%d %d\n",x,y); RUL(n-1); } void LDR(int n) { if(n<=0) {return;} DLU(n-1);x=x-1;printf("%d %d\n",x,y); LDR(n-1);y=y-1;printf("%d %d\n",x,y); LDR(n-1);x=x+1;printf("%d %d\n",x,y); URD(n-1); } void URD(int n) { if(n<=0) {return;} RUL(n-1);y=y+1;printf("%d %d\n",x,y); URD(n-1);x=x+1;printf("%d %d\n",x,y); URD(n-1);y=y-1;printf("%d %d\n",x,y); LDR(n-1); } です。それをBWT変換とエントロピー符号にかけ圧縮させその圧縮率を求めその後画像はちゃんと戻るかを調べるために復元のプログラムを書かないいけませんがそのプログラムがわかりません。教えてください。

  • ヒルベルトのドラゴン曲線。

    ヒルベルトのドラゴン曲線の4相目の絵を描きなさい。 という課題が出ました。 ヒルベルトのドラゴン曲線が、 ・4つ折にした紙を広げた形。なのか、 ・ラーメンの丼に書かれていそうなコの字が合体したもの。なのか、 分からなくなってしまいました。 ヒルベルトのドラゴン曲線の4相目の絵がどのようなものになるのか教えてください。また、詳しいサイトなどありましたら教えてください。 お願いします。

  • プログラムC

    前にも質問したのですがヒルベルト曲線を用いて画像をスキャンするプログラムとビットマップの画像を読み込むプログラムを用いてお互いの座標を関連付けてヒルベルト曲線の座標にビットマップの1画素ずつの値を代入したいのですがどうしてもうまくいかなく質問しました。 前に質問した物はhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=1106704 にあります。ヒルベルトは質問覧にビットマッピはNO2の補足にあります。プログラムを書くと800字を超えてしまうのでそのようにしました。 ヒルベルトは他に #include<stdio.h> int x,y; int n; void RUL(int n),DLU(int n),LDR(int n),URD(int n); main() { scanf("%d",&n); printf("#位相%dのヒルベルト曲線\n",n); x=0; y=0;printf("(%d %d) ",x,y); RUL(8); } void RUL(int n) { if(n<=0) {return;} URD(n-1);x=x+1;printf("(%d %d)",x,y); RUL(n-1);y=y+1;printf("(%d %d)",x,y); RUL(n-1);x=x-1;printf("(%d %d)",x,y); DLU(n-1); } void DLU(int n) { if(n<=0) {return;} LDR(n-1);y=y-1;printf("(%d %d)",x,y); DLU(n-1);x=x-1;printf("(%d %d)",x,y); DLU(n-1);y=y+1;printf("(%d %d)",x,y); RUL(n-1); } void LDR(int n) { if(n<=0) {return;} DLU(n-1);x=x-1;printf("(%d %d)",x,y); LDR(n-1);y=y-1;printf("(%d %d)",x,y); LDR(n-1);x=x+1;printf("(%d %d)",x,y); URD(n-1); } void URD(int n) { if(n<=0) {return;} RUL(n-1);y=y+1;printf("(%d %d)",x,y); URD(n-1);x=x+1;printf("(%d %d)",x,y); URD(n-1);y=y-1;printf("(%d %d)",x,y); LDR(n-1); } があります。

  • C言語

    座標から画像の値を読み出すプログラムを教えてください。REDHATLinuxを使用しています。

  • C言語のプログラム教えて!!

    二つの積分値の数値解を台形則とシンプソン則により求めるプログラムを作りたいのですがよくわかりません。また、プログラムは曲線上の点数を入力データで与えられるように作り、点数を変えたときの積分値の変化を示すようにしなければいけない。プログラム、入力データ、計算結果が分かるように回答して頂ければありがたいです。

  • C言語のプログラム

    以下の問題のプログラムの回答をお願いします。 C言語のプログラムで 100 × 100 ドットで、白黒が交互になっている(市松模様という)画像を作成するプログラムを作る。と、100 × 100 ドットのカラー画像で、各点の色を乱数で設定した画像を作成するプログラムを作る。 困っているんでどうかよろしくお願いします。

  • ベジェ曲線の座標について

    描画したベジェ曲線の座標値が知りたいのですが 見られる方法はあるのでしょうか? 座標というはベジェ曲線を構成している 制御点の座標のことです。 使っているドロー系のソフトは 『イラストレータ8.0J』と 『FLASH MX』です。 最近CGの勉強をはじめてベジェ曲線の数式に 触れる機会ができたので、自分が描いた絵を 数値で出力して、自分の作った ベジェ曲線描画ソフト(らしきもの)で 出してみたいと思ったのがキッカケです。 ご助言、宜しくお願いします<(_ _)>

  • 曲線を作図してくれるプログラムを探しています

    ボリュームスイッチを設定することによって、曲線が描かれるようなプログラムを探しています。 与えられた関数の曲線を描くソフトならどんなものでもいいので、そのソフト名とできればアドレスを教えてください。

  • c言語の画像処理プログラム

    画像処理を勉強している初心者です。これからいろいろな画像処理を勉強していく予定ですが、もっとも基本のc言語で画像を表示させる方法がわからないですが、プログラムのソースとやり方を詳しく教えていただけませんか?

  • C言語の質問です。

    C言語の質問です。 以前質問した、C言語初心者のものです。 以前回答してくださった方、ありがとうございました! 前回の質問とかぶるんですが、質問は、 正方形の画像を円形にひきのばす(歪ませる)というプログラムがなかなか書けません。 どなたか教えてください! 円形にひきのばしたときに、正方形のどの座標がどにに移動してるのかってのを考えてつくりたいのですが。 画像を添付しました。 この画像の意味は、たとえば、正方形の中にある緑の四角(座標)が円のほうの緑の四角(座標)に移動したと考えたときに、添付画像に書いてある公式をつかって処理していくってことなんですが・・・。 それを同じようにすべての座標で処理していって円形に歪ませた画像をつくりあげたいんです。

専門家に質問してみよう