C言語による画像再構成の基礎 (画像再構成シリーズ)
という本に基づいてC言語で画像再構成のプログラミングの勉強をしているのですが、この本の中で白い部分を100、黒い部分を0と画像を表現するプログラムを組んだあとそれを白と黒の画像にするソフトが明記されていませんでした。そのページが以下です。
http://autolandtom.web.fc2.com/text.html
赤下線部の「画像表示専用のソフト」を何かが存じの方がいらっしゃいましたら教えてくだいさい。
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.3です.
説明が足りなかったと思うので補足します。
ImageJで表示できるだろうと述べたのは、質問者さんがお礼に書かれていた、 P3-03rect.c で作った画像データです。私のPC環境では、前に回答した手順で特にColor画面をいじる必要もなく、黒地に白い四角が表示されます。
ただこの画像の作り方は、P3-03rect.c をコンパイル・実行した環境によってデータの長さやエンディアンが変わる可能性があります。その場合はその環境に応じて対処する必要が生じます。
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.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.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のような画像を表示させるためにはどのような実行をすればよろしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 画像の画素値を変えるC言語のプログラムで指定された画像の中に白い三角形を右上に表示させるにはどのよう 3 2022/10/30 01:16
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- HTML・CSS リンクバナーのHTMLタグ。画像を変えたり、設置位置を変えるとバナー貼付け側はどう見える? 2 2023/02/01 12:01
- Excel(エクセル) Excelでシフト表を作成したいです。添付した画像の上の表から下の表のように、各現場… 3 2023/04/06 20:33
- HTML・CSS htmlです。 上のところには黒文字でピカチュウで、ピカチュウの文字には影をすべてにつけてください周 1 2023/01/02 12:48
- Illustrator(イラストレーター) ワードに貼った画像のキャンバスと画像本体のサイズの調整 2 2022/05/19 18:31
- YouTube YouTubeはTV番組、映画の違法アップロードに対して収益金を支払っているか否か? 1 2022/04/30 20:12
- Windows 10 フォルダ内の全ての画像を矢印キーでスライドできるようにしたい 1 2022/10/21 12:53
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PDFの保存ボタンが表示されません
-
蔵衛門のアルバムの表紙の画像...
-
「縮小専用」で縮小した画像が...
-
画像データを実際に画面で表示...
-
画像貼り付け、URLに飛べる軽い...
-
CGIが実行可能なHP領域又はレン...
-
アラームがなった時に画像が出...
-
Illustratorの書類に埋め込まれ...
-
イラストレータに配置すると透...
-
Adobe インデザインに詳しい方...
-
ボタンを押したままにする。
-
ロゴマークだけを抜き取って貼...
-
同じ画像 複数回使用
-
透過背景画像のビットマップ形...
-
IMGタグでTIFF画像を表示
-
<hr>の縦バージョンはありますか?
-
タイトルバーに画像を入れるHTM...
-
バナーの貼り方とバナーにリン...
-
背景を透過加工したPNG画像を色...
-
ページごとに背景画像を変更し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PDFの保存ボタンが表示されません
-
蔵衛門のアルバムの表紙の画像...
-
画像データを実際に画面で表示...
-
画像貼り付け、URLに飛べる軽い...
-
バナー画像のファイル形式
-
たくさんのjpgファイルをスクロ...
-
IrfanView で画像のスクロール...
-
「縮小専用」で縮小した画像が...
-
CGIが実行可能なHP領域又はレン...
-
Illustratorの書類に埋め込まれ...
-
手動スライドショーができる画...
-
ものさし・・・みたいなフリー...
-
premiere pro/画像やタイトルが...
-
IBM ウェブアートデザイナーが...
-
グーグルアースの雲って消せな...
-
フォトショップCSの16bit表示
-
dreamweaver使用して、画像のプ...
-
ホームページ・ビルダーで変更...
-
LaTex での文章と画像の並置
-
C言語で白黒の画像表現
おすすめ情報