C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 画像割符プログラミングについて


(過去ログ 114 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■67624 / inTopicNo.1)  画像割符プログラミングについて
  
□投稿者/ Nam (1回)-(2013/08/17(Sat) 20:53:42)
Nam さんの Web サイト

分類:[C/C++] 

今、C++で画像割符をしていて、デバッグをしたらノイズ画像の中にHITという文字画像が表示されるプログラムを構築中です。
一応2つの分散画像の基本行列([2][2]画素構成)は

char a[2][2]={{1,0},{1,0}}; //白画素の基本行列
char b[2][2]={{1,0},{0,1}}; //黒画素の基本行列
まで完成しましたが、この後がどうしても行き詰まってしまいます。


HITの文字を表示させるために4つのアドバイスを頂きました。

A、まず、紙にHITという文字([15][30]画素の構成)を書く
B、その画素の白画素の部分に白となる基本行列の組み合わせ、黒画素の部分に黒となる基本行列の組み合わせを求める
C、これらが分かれば、HIT[15][30]画素の左上から順番に代入する
D、代入文は2つの配列要素を等号でつなぐ、その時,等号の右側の変数の値が,等号の左側の変数に代入される


これらの中でBとCが全然分かりません。

 A=HIT([15][30]画素)の基本行列です
      ↓
     char s[15][30]={
       0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
何でも構わないので上記のBとCに関するアドバイスをお願いします。

今まで迷惑をかけて申し訳ありません。かなり焦ってしまい、マルチスレッドを立てて
しまいましたが、もうこれで最後のスレッドにします。
ご協力お願いします。



引用返信 編集キー/
■67625 / inTopicNo.2)  Re[1]: 画像割符プログラミングについて
□投稿者/ オショウ (82回)-(2013/08/17(Sat) 22:27:16)
> HITの文字を表示させるために4つのアドバイスを頂きました。

  人の言うことよりも、基本のアルゴリズムがどうなっているのか
  解っておられるのでしょうか?

  マルチポストするから、他の掲示板でカキコした内容を見落とす
  のではないかと思います。

  ttp://ohta-lab.jp/users/mitsugu/research/VSSS/main.html

以上。参考まで
引用返信 編集キー/
■67627 / inTopicNo.3)  Re[2]: 画像割符プログラミングについて
□投稿者/ Nam (3回)-(2013/08/17(Sat) 23:38:01)
Nam さんの Web サイト
No67625 (オショウ さん) に返信

基本のアルゴリズムを理解した上で投稿しました。
引用返信 編集キー/
■67628 / inTopicNo.4)  Re[3]: 画像割符プログラミングについて
□投稿者/ バーナル (1回)-(2013/08/18(Sun) 00:07:11)
No67627 (Nam さん) に返信
> ■No67625 (オショウ さん) に返信
>
> 基本のアルゴリズムを理解した上で投稿しました。

基本のアルゴリズムが理解できているなら、そのアルゴリズムの通りにコードに置き換えればいいだけの話なのですが。
アルゴリズムが理解できていないからコード化できないのではないのですか?
そうでなければ、具体的にどのようなアルゴリズムを考え、どの部分がコード化できないのかを示さないと、
だれも相手にはしてくれないでしょう。
引用返信 編集キー/
■67629 / inTopicNo.5)  Re[4]: 画像割符プログラミングについて
□投稿者/ επιστημη (78回)-(2013/08/18(Sun) 12:46:30)
επιστημη さんの Web サイト
2013/08/18(Sun) 14:27:30 編集(投稿者)
> ttp://ohta-lab.jp/users/mitsugu/research/VSSS/main.html

ココ↑にあった"絵"を頼りにエイヤで書いてみた。

#include <iostream>
#include <valarray>
#include <random>

using namespace std;

void print(valarray<bool> ary, int width) {
  for ( size_t i = 0; i < ary.size(); ++i ) {
    cout << (ary[i] ? '#' : ' ');
    if ( (i+1) % width == 0 ) cout << endl;
  }
}

int main() {
  const int WIDTH = 30;
  const int HEIGHT = 15;

  bool s[HEIGHT][WIDTH]={
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  };

  valarray<bool> src(HEIGHT*WIDTH);
  for ( size_t i = 0; i < src.size(); ++i ) {
    src[i] = (&s[0][0])[i];
  }
  cout << "--- 元画像 ------------------------------------------\n";
  print(src, WIDTH);

  valarray<bool> noise(HEIGHT*WIDTH);
  mt19937 eng;
  bernoulli_distribution toss;
  for ( size_t i = 0; i < noise.size(); ++i ) {
    noise[i] = toss(eng);
  }
  cout << "--- ノイズ ------------------------------------------\n";
  print(noise, WIDTH);

  valarray<bool> imgA(HEIGHT*WIDTH*2);
  for ( size_t i = 0; i < noise.size(); ++i ) {
    imgA[i*2]   =  noise[i];
    imgA[i*2+1] = !noise[i];
  }
  cout << "--- 画像A ------------------------------------------\n";
  print(imgA, WIDTH*2);

  valarray<bool> imgB(HEIGHT*WIDTH*2);
  for ( size_t i = 0; i < noise.size(); ++i ) {
    imgB[i*2]   = (src[i] && !noise[i]) || (!src[i] && noise[i]);
    imgB[i*2+1] = !imgB[i*2];
  }
  cout << "--- 画像B ------------------------------------------\n";
  print(imgB, WIDTH*2);

  valarray<bool> imgC(HEIGHT*WIDTH*2);
  for ( size_t i = 0; i < imgC.size(); ++i ) {
    imgC[i] = imgA[i]||imgB[i];
  }
  cout << "---- 画像 A,B を重ねたもの --------------------------------------\n";
  print(imgC, WIDTH*2);
}

/* 実行結果
--- 元画像 ------------------------------------------


   #     #   #####   #######
   #     #     #        #
   #     #     #        #
   #     #     #        #
   #     #     #        #
   #######     #        #
   #     #     #        #
   #     #     #        #
   #     #     #        #
   #     #     #        #
   #     #   #####      #


--- ノイズ ------------------------------------------
# ## ## #  #  ###### ####  ##
    ########  # ### ###   #
##   #   ####  ##  #    # #
    ###### ## ## #   ### ###
## #### # ###  #   ###  #   #
 # # ### #  ######## ## ##  ##
    ### ##  #    #   ##  ###
#   ###### # # ### ## ###  # #
  ##  ### ##   #  ## ##  #
 ## ###  ####   #    #     # #
 # ## #    # ##     ##
  ######   #  #    # ## # #
##  ## ##     ####  # #  #   #
  # ### ####  # ## ## # # ###
 #   #  ##       #    ## # ###
--- 画像A ------------------------------------------
 ##  # ##  # ##  ## #  ## #  # # # # # ##  # # # ## #  # ##
# # # #  # # # # # # # ## #  ##  # # ##  # # ## # #  ## # #
 # ## # #  ## # #  # # # ## #  # ## #  ## # # #  ##  ## # #
# # # #  # # # # # ##  # ##  # ##  ## # #  # # ##  # # ## #
 # ##  # # # ##  ##  # # ## #  ## # #  # # ## #  ## # #  ##
#  ##  ##  # # ##  ## #  # # # # # # # ##  # ##  # ## #  # #
# # # #  # # ##  # ## #  ## # # #  ## # #  # ## #  # # ## #
 ## # #  # # # # # ##  ##  ##  # # ##  # ##  # # ## #  ##  #
# #  # ## #  # # ##  # ## # #  ## #  # ##  # ## #  ## # # #
#  # ##  # # ## #  # # # ## # #  ## # # #  ## # # # #  ##  #
#  ##  # ##  ## # # #  ##  # ## # # # #  # ## # # # # # # #
# #  # # # # # ## # #  ## #  ## # # #  ##  # ##  ##  ## # #
 # ## #  # ##  # ## # # # #  # # # ## #  ##  ## #  ## # #  #
# #  ##  # # ##  # # # ## #  ##  # ##  # ##  ##  ##  # # ##
#  ## # #  ## #  # ## # # # # # #  ## # # #  # ##  ##  # # #
--- 画像B ------------------------------------------
 ##  # ##  # ##  ## #  ## #  # # # # # ##  # # # ## #  # ##
# # # #  # # # # # # # ## #  ##  # # ##  # # ## # #  ## # #
 # ##  ##  ## # # #  # # # # ## #  ##  ##  # # ##  ##  ## #
# # #  # # # # # ## #  # ##  ## #  ## # #  # # # # # # ## #
 # ## #  # # ##  # # # # ## # # # # #  # # ## # # # # #  ##
#  ## # #  # # ## # # #  # # ##  # # # ##  # ## #  ## #  # #
# # #  # # # ##  ## # #  ## #  ##  ## # #  # ##  # # # ## #
 ## #  ## # # # # # #  ##  ## #  # ##  # ##  # ## # #  ##  #
# #  ## # #  # # # # # ## # # # # #  # ##  # ##  # ## # # #
#  # # # # # ## # #  # # ## #  # ## # # #  ## #  ## #  ##  #
#  ## #  ##  ## #  ##  ##  # # ## # # #  # ## #  ## # # # #
# #  ##  # # # ##  ##  ## #  # ## # #  ##  # ## # #  ## # #
 # ##  # # ##  # # ## # #  ## # # # # #  ##  ##  # ## # #  #
# #  ##  # # ##  # # # ## #  ##  # ##  # ##  ##  ##  # # ##
#  ## # #  ## #  # ## # # # # # #  ## # # #  # ##  ##  # # #
---- 画像 A,B を重ねたもの --------------------------------------
 ##  # ##  # ##  ## #  ## #  # # # # # ##  # # # ## #  # ##
# # # #  # # # # # # # ## #  ##  # # ##  # # ## # #  ## # #
 # ## ###  ## # # ## # # ############  ## ############### #
# # # ## # # # # ####  # ##  ####  ## # #  # # ### # # ## #
 # ## ## # # ##  ### # # ## # ### # #  # # ## # ### # #  ##
#  ## ###  # # ## ### #  # # ### # # # ##  # ## ## ## #  # #
# # # ## # # ##  #### #  ## # ###  ## # #  # ## ## # # ## #
 ## # ###############  ##  ## ## # ##  # ##  # #### #  ##  #
# #  #### #  # # ### # ## # # ### #  # ##  # ## ## ## # # #
#  # ### # # ## # ## # # ## # ## ## # # #  ## # ### #  ##  #
#  ## ## ##  ## # ###  ##  # #### # # #  # ## # ### # # # #
# #  ### # # # ## ###  ## #  #### # #  ##  # ## ###  ## # #
 # ## ## # ##  # #### # # ########### #  ##  ## ## ## # #  #
# #  ##  # # ##  # # # ## #  ##  # ##  # ##  ##  ##  # # ##
#  ## # #  ## #  # ## # # # # # #  ## # # #  # ##  ##  # # #
*/

引用返信 編集キー/
■67630 / inTopicNo.6)  Re[1]: 画像割符プログラミングについて
□投稿者/ Jitta (61回)-(2013/08/18(Sun) 19:42:33)
Jitta さんの Web サイト
No67624 (Nam さん) に返信
No67495 はどうなったん?
引用返信 編集キー/
■67631 / inTopicNo.7)  Re[2]: 画像割符プログラミングについて
□投稿者/ ピクミン (2回)-(2013/08/18(Sun) 20:57:02)
っていうか、みんなスルースキルというものがないのかねぇ。
今までの経緯を見れば、あえて回答しない、というのが質問者のためになると思うのだが。
引用返信 編集キー/
■67636 / inTopicNo.8)  Re[3]: 画像割符プログラミングについて
□投稿者/ Jitta (62回)-(2013/08/19(Mon) 22:11:13)
Jitta さんの Web サイト
No67631 (ピクミン さん) に返信
> っていうか、みんなスルースキルというものがないのかねぇ。
> 今までの経緯を見れば、あえて回答しない、というのが質問者のためになると思うのだが。

回答する?違うなぁ。こっちが聞いているんだよ、面白そうだから。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -