C言語による画像再構成の基礎 (画像再構成シリーズ)
という本に基づいてC言語で画像再構成のプログラミングの勉強をしているのですが、この本の中で白い部分を100、黒い部分を0と画像を表現するプログラムを組んだあとそれを白と黒の画像にするソフトが明記されていませんでした。そのページが以下です。
http://autolandtom.web.fc2.com/text.html
赤下線部の「画像表示専用のソフト」を何かが存じの方がいらっしゃいましたら教えてくだいさい。
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
imgという1次元配列(128*128で要素数は16384)のうち0になる部分は黒で、
100になる部分は白として点(ドット)を打っているだけでしょう。
画像に関しては実行環境に依存すると思われますので、具体的なプログラム例が出ていないだけではありませんか?
画像フォーマットに合わせて出力すれば、その画像フォーマットに適合したビュアーで表示できるでしょう。
# BMPのヘッダとデータ構造に合わせればペイントとかで見られますし。
まぁ、状況からしたら…PBMとかの方が楽でしょうかね。
http://www.mm2d.net/c/c-08.shtml
fopen()でなんちゃら.pgmとしてオープンして…
fputs("P2\n128 128\n100\n", fp);
for(i=0;i<128;i++) {
for(j=0;j<128;j++) {
fprintf(fp, "%d ", img[i*128+j]);
}
fputs("\n", fp);
}
みたいな感じで。
回答ありがとうございます。
参考プログラムは載っていました。
/* P3-03rect.c */
#include <stdio.h>
#include <stdlib.h>
main( )
{
char fi[50];
float img[128*128];
int nx = 128, ny = 128;
int i, j;
FILE *fp;
// 画像の初期化
for (i = 0 ; i < nx*ny ; i++)
img[i] = 0;
// 矩形画像の作成
for (i = 32 ; i <= 96 ; i++) {
for(j = 32 ; j <= 96 ; j++) {
img[i*nx+j] = 1;
}
}
// 画像の書き出し
printf( "Input new file name: " );
scanf( "%s", fi );
if ((fp = fopen ( fi, "wb")) == NULL) {
printf("Error: file open [%s].\n", fi);
exit (1);
}
fwrite(img, sizeof(float), nx*ny, fp);
fclose (fp);
}
というプログラムがのっていましたが
//短形画像の作成というところが白と黒を区別しているところなのでしょうか?
だとしたら図3-10のような画像を表示させるためにはどのような実行をすればよろしいのでしょうか?
No.2
- 回答日時:
多分カテゴリ、「技術者向」のほうがよかったですね。
これしっかし!ひどい本だね~これ
料理番組で「秘密のソースを加えます」って書いてるようなもんだわ。
BMP(DIB)の作り方から教えるべきじゃないのかな~これって(w)
まずは、この部分の開設
▼
// 画像の初期化
for (i = 0 ; i < nx*ny ; i++)
img[i] = 0;
▲
ワークに全部0を代入しています。今回の例では「黒」を意味しているようです。
その後、以下の処理で、くりぬきを行っているようです。
▼
// 矩形画像の作成
for (i = 32 ; i <= 96 ; i++) {
for(j = 32 ; j <= 96 ; j++) {
img[i*nx+j] = 1;
}
}
▲
部分的に、1を代入しているようです。今回の例では、「白」を意味しているようです。
で問題は、書き出したこのデータなんですが。。
データであって、画像形式ではないのが、問題ですね。
そこを説明していたのが、No1さんです。
画像形式といっても、複数あるが、手っ取り早いつくり方を
アドバイスしています。
で、この本で書かれていない問題点として、
0と1しか使ってませんが、どっちが黒?どっちが白?はなく、
ただの値でしかなく、これを色にするには、カラー情報が別途必要です。
たとえば、赤と青のみでも、「2値」の情報=0と1だけだということです。
".pgm"の形式をサポートするグラフィックビュアーをお持ちなら、
No1さんの形式でぜんぜんOKですし。
1歩さがって、DIBの形式を覚えてみるのも手ですね。
手っ取り早いのは、フルカラー24ビットで、ヘッダーのみいれたのが
使いやすいかもしれません。
ということで、一度、メモリの中身を画像化するプログラムを
やってみてはいかがでしょう?
現在は、まだ、値だけしか、見えていないのでしょうし。
私が思うには、このサンプル。。。
"*" と " " とかで、コンソールで見えるサンプルにするべきだと
思うのだが。。
読むと余計に、パニック起こしそうに感じます。
**************** < 練習用サンプルなのであれば
****************
***** *****
***** *****
****************
**************** < こんな感じで、画面に出たほうが、ありがたいとおもうが。
No.3
- 回答日時:
> 赤下線部の「画像表示専用のソフト」を何か...
著者が自作したソフトのような気がしますね。float型の画像、しかも素のバイナリデータ、これを扱える表示ソフトは非常に少ないです。
確かとは言えませんが、この画像ならImageJで表示できるかもしれません。ImageJを使うにはJava(http://java.com/ja/)も必要です。
ImageJを起動し、メニューから[File] - [Import] - [Raw...]
ファイルダイアログボックスでファイルを選択します。
次のダイアログ画面で下のように入力し、
Image type: 32-bit Real
Width: 128
Height: 128
[OK]をクリックすれば読み込めます。
あとはメニューから[Image] - [Adjust] - [Color Balance...]
でColor画面を開き、明るさを適当に調整すればよいかと。
(プログラムを実行する環境によっては、書き込む画像データのエンディアンも変換が必要かもしれませんが、それは別途調べてください)
参考URL:http://rsb.info.nih.gov/ij/index.html
No.4
- 回答日時:
No.3です.
説明が足りなかったと思うので補足します。
ImageJで表示できるだろうと述べたのは、質問者さんがお礼に書かれていた、 P3-03rect.c で作った画像データです。私のPC環境では、前に回答した手順で特にColor画面をいじる必要もなく、黒地に白い四角が表示されます。
ただこの画像の作り方は、P3-03rect.c をコンパイル・実行した環境によってデータの長さやエンディアンが変わる可能性があります。その場合はその環境に応じて対処する必要が生じます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PDFの保存ボタンが表示されません
-
蔵衛門のアルバムの表紙の画像...
-
1枚の画像の容量は・・・
-
画像貼り付け、URLに飛べる軽い...
-
IrfanView で画像のスクロール...
-
スキャン画像と写真画像の違い...
-
たくさんのjpgファイルをスクロ...
-
premiere pro/画像やタイトルが...
-
背景を透過加工したPNG画像を色...
-
スライドショーの上にロゴマー...
-
Gifのまわりに白い線ができる
-
png画像をphotoshop5.0で透過す...
-
画像上に文字を表示するとiPhon...
-
IMGタグで画像の繰り返し使用は…
-
「DecareステートメントにPtrSa...
-
拡張子無しで画像を表示したいです
-
aviutlで動画に黒い画像(暗幕...
-
htmlかcssで背景の白い枠をなく...
-
GIFアニメを保存すると、白いふ...
-
IMGタグでTIFF画像を表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PDFの保存ボタンが表示されません
-
画像貼り付け、URLに飛べる軽い...
-
「縮小専用」で縮小した画像が...
-
蔵衛門のアルバムの表紙の画像...
-
たくさんのjpgファイルをスクロ...
-
IrfanView で画像のスクロール...
-
IBM ウェブアートデザイナーが...
-
PowerDirectorでバックで曲が流...
-
Illustratorの書類に埋め込まれ...
-
dreamweaver使用して、画像のプ...
-
ViXの全画面表示で画像が画面一...
-
LaTex での文章と画像の並置
-
手動スライドショーができる画...
-
グーグルアースの雲って消せな...
-
GIMPで、「土台画像」の上に「...
-
ものさし・・・みたいなフリー...
-
フォトショップCSの16bit表示
-
dreamweaverで画像をクリックす...
-
こんな画像ビューア知りませんか。
-
Painter8で作った画像が見れな...
おすすめ情報