- ベストアンサー
C言語
kyrscheの回答
- kyrsche
- ベストアンサー率41% (7/17)
取得した画像を圧縮したい(圧縮率を出したい)、ということと、 JaritenCat さんのフォローから、私もなんとなく(^_^; 二次元画像を扱う場合、普通は一次元のデータに変換して加工処理を 行いますが、通常の画像の格納方法はラスター形式なのでX軸が回帰する 部分で連続しない無関係のデータになってしまう。 この部分を効率よく処理(圧縮)するために二次元の情報を持ちつつ 一次元にする変換方法として、ヒルベルトスキャンがある。 この変換を事前に行うことで、圧縮効率の向上が見られるかどうか、 そしてどの程度の向上があるかを判断したい、ということですね(^_^;; #かなり説明チックですね・・・。 やり方としては、JaritenCat さんがだいたい書かれてますのでそちらを(^_^;;; ファイルアクセス(read/write)と、配列からヒルベルトスキャンを行う 関数を組み合わせればよいと思います。ファイルアクセス処理は、C言語の 参考書であれば、だいたい載っていますので、そちらを参考に。 ヒルベルトスキャンは・・・自作だとちょっと面倒かもしれませんので、 出来合いのライブラリを借用(フリー公開のものを(^_^;;)して作るほうが 良いでしょうね。 #C Magazine2000年10月号にそういう特集があるみたいですね。 #ソースコードも公開されているようです。 #googleで「ヒルベルト」「ソース」「C」で検索して最初の方に出てくるようです。 #ただ、C++ for VC++なので、ちょっとクセがあるかなーと思いますが。 ##「クセ」は、Linuxでそのままでは使用できなさそうという意味で。 私は、ここ数年来Java屋さんなので C/C++ はちょっとつらいですね(^_^;; #心はC屋さんのつもりなのですが・・・(>△<
関連するQ&A
- c言語、パチンコリール
c言語とDirectXを使用して、パチンコのリールを作っています。 質問なんですが、図柄の画像が0~9まであったとします。 現在、スプライトを使って左上と右下座標のY座標に値を与えて、画面の上から下まで画像を動かしています。 しかし、9まで行ってもまた画面の上から0を出すことができません。 これをループさせたいのですがどうすればよいでしょうか? 説明内容不足を承知していますので、随時補足していきたいと思いますので、よろしくお願い致します。
- 締切済み
- C・C++・C#
- C言語の質問です。
C言語の質問です。 以前質問した、C言語初心者のものです。 以前回答してくださった方、ありがとうございました! 前回の質問とかぶるんですが、質問は、 正方形の画像を円形にひきのばす(歪ませる)というプログラムがなかなか書けません。 どなたか教えてください! 円形にひきのばしたときに、正方形のどの座標がどにに移動してるのかってのを考えてつくりたいのですが。 画像を添付しました。 この画像の意味は、たとえば、正方形の中にある緑の四角(座標)が円のほうの緑の四角(座標)に移動したと考えたときに、添付画像に書いてある公式をつかって処理していくってことなんですが・・・。 それを同じようにすべての座標で処理していって円形に歪ませた画像をつくりあげたいんです。
- 締切済み
- C・C++・C#
- c言語によるアルゴリズム
やりたいことは、たくさんの画像をいくつかのグループ(1グループに画像が数十種類)用意し、入力画像とそれらを比較します。そして、最も入力画像に似ている画像があるグループを選び出します。画像自体はx-y座標に点がある程度です。似た画像かどうかは、openCVのcvMatchShapesを使おうかと考えています。 参考 http://opencv.jp/sample/matching.html 画像を呼び出そうと思うと、一つ一つ画像名から呼び出すと思うのですが、大量の画像を呼び出すことを考えると、画像名を全て書いていたのではプログラムが長くなると思います。何かいい方法はないでしょうか。 また、座標値がわかっていますので、数値でグループを特定できる方法があれば、そちらの方法を教えてもらいたいです。 こちらはプログラミング、画像処理ともに初心者です。他にいい方法があれば,それも教えてもらえるとうれしいです。よろしくお願いします。
- 締切済み
- C・C++・C#
- ヒルベルト曲線のプログラムについて(C言語)
私は今画像の圧縮の勉強でヒルベルト曲線を勉強していますが、その曲線の座標を示すプログラムが書けません。教えて欲しいです。またその復元させるプログラムも教えて欲しいです。
- 締切済み
- C・C++・C#
- c言語にてプログラミング
四角じゃないいびつな形の画像があります その画像の中心の座標を得るためのプログラミングを作らなければなりません 全ピクセルのx座標をピクセルの数で割ったりして求めなければなりません これをどうやってプログラミングするかわかりません! 教えてください!!
- 締切済み
- C・C++・C#
- C言語のプログラムに関することで質問です。
C言語のライブラリを利用したプログラムのことで質問なのですが、座標xとyの成分から、ベクトルの角度(t)と大きさ(r)を求めるプログラムを作りました。しかし、このままのプログラムだと、ある場合のときに限り、正しい値が返されなくなるらしいのですが、それはどのような場合で正しい値が返されなくなってしまうのかを教えてください。また、正しい値がでるようにするにはどこをどう直したらよいのでしょうか? 自分でも考えてみたのですが、分からず困っています。分かる方どうかよろしくお願いいたします。 #include <stdio.h> #include <stdlib.h> #include <math.h> #define square(x) ((x) * (x)) //ベクトルの角度θを返す関数 double theta(double x, double y) { return atan(y / x); } //ベクトルの大きさを返す関数 double radius(double x, double y) { return sqrt(square(x) + square(y)); } int main(int argc, char **argv) { double x, y; //x, yは座標 double t, r; //t, rは極座標 if(argc == 3 && (x = atof(argv[1])) && (y = atof(argv[2]))) { t = theta(x, y); //極座標tを計算 r = radius(x, y); //極座標rを計算 //ベクトルの角度と大きさを表示 printf("t = %f, r = %f\n", t, r); } return 0; }
- ベストアンサー
- C・C++・C#
- C言語について
倍精度の浮動小数点で与えられる4点の座標(x1,y1),(x2,y2),(x3,y3),(x4,y4)を入力して、その4点が頂点になる四角形の面積を算出して表示するプログラムをC言語を用いて書くとどういうプログラムをつくればいいのでしょうかm(__)m
- ベストアンサー
- その他(学問・教育)
- Cで回転プログラムの高速化を
Cで、90枚の画像を、それぞれ0度から90度まで回転させるプログラムを作りました。 回転の処理は重く時間がかかるため、 それぞれの角度の回転後の位置を配列に格納して、 その値を参照して画像を回転させていこうと思ったのですが、 例えば、画像が300*300としたら回転座標を入れる配列は2次元で2つとりますよね? kaitenX[90][300] kaitenY[90][300] これで、例えば元画像を50度回転させる時のx,y座標が10,50の所の回転後の座標は kaitenX[50][10]の値(回転後のx座標の値) と kaitenY[50][50]の値(回転後のY座標の値)を 参照さしてやればいいと思うのですが、 このとき、回転後の画像をtemp[300][300]という回転後の出力用配列に 代入していくとき、 どうやって代入していけばよいでしょうか? まさか、 for(r=0;r<90;r++) //rは角度情報 for(i=0;i<300;i++) for(j=0;j<300;j++) { temp[i][j] = Gengazo[r][kaitenx[r][j]][kaiteny[r][i]] } なんて風には書けませんよね^^;(自分で一応試したけどダメでした) 回転後の座標を格納するまでは出来ると思うのですが、 格納後、どうやってその値を参照させて、格納させていけばいいか わかりません。 教えていただけませんでしょうか? また、もっと高速化できる効率の良い方法があれば教えて下さい。
- ベストアンサー
- C・C++・C#
- C言語→MATLABへの変換で、困っています。
学生研究でMATLABを使用しています。 光学測定系で画像を取り込み、それを解析する実験を行っています。 MATLABはプログラム内の値の変更や処理の追加できることから 大変助かっています。 そこで、もともとはC言語でやっていた3種類の処理を 一つのMファイルで行いたいと思い。 只今、C→MATLAB変換するプログラムの書き直しを行っています。 そのうち2種のプログラムは行列の計算がメインだったため何とか Mファイルに書き直すことができたのですが、 最後のひとつが難しい関数らしきものが多く、 MATLABに書き直すことができるプログラムなのかもわからない状態です。 そこで、 ・C→MATLAB変換可能なプログラムか? ・書き直すにあたってどこを部分を直せばよいのか? をアドバイスいただけないでしょうか? ↓MATLAB化したいC言語ファイル http://karispace.web.fc2.com/cmat2.c 一枚のbmp画像から4枚のdatデータを出力するプログラムです。 C言語とMATLABの三ヶ月前に勉強して、使用しており、基礎がわかる程度です。 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
補足
ありがとうございます。ヒルベルトスキャンのプログラムはいちおうできました。結果は(0,0)(0,1)(1,1)・・・・ という感じで。それからできなくて困ってます><。