• ベストアンサー

画像処理のプログラム

今,領域拡張法というプログラムを作ろうとしています. 領域拡張法は,ある1画素(白画素)に注目して,周りの8近傍の画素値があらかじめ設定したしきい値よりも大きけれ,注目画素の領域を拡張していきます.このプログラムを作成しようとしているのですが,プログラムを書く上で参考になるホームページがなかなか見つかりません.なので,領域拡張法についての参考ホームページ (プログラムソースがあるところを教えてもらえるとありがたいです.)の場所を知っていたら,教えてください. よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • t11u
  • ベストアンサー率40% (4/10)
回答No.1

たぶん、ズバリです。

参考URL:
http://www7a.biglobe.ne.jp/~fairytale/article/program/graphics.html
greenmax
質問者

お礼

ありがとうございました. 助かりました.

関連するQ&A

  • 平滑化フィルタなどフィルタリングをするにあたって

    3*3近傍のフィルタを掛けるとき、 注目画素を、(1,1)などからはじめめれば、上下左右に3*3近傍があるので、フィルタを普通に掛ければいいと思うのですが、 注目画素を(0,0)(一番左上)にしたときは、注目画素の左近傍や 上近傍が無いですよね。そういうところはどうやってフィルタかければいいのでしょうか? 値の無い場所は無視して、ある場所だけ掛けて計算すればいいのでしょうか?(例えば上の例だったら、右、斜め右下、下、注目画素の4点だけフィルタ掛けて計算すればいいのでしょうか?)

  • 画像処理のプログラムについて

    初めまして、こんにちは C言語で画像処理のプログラミングについてご解答をお願いします 現在二値化した白黒バーコードに対して、ビット数埋め込みというものを行っています この画像に埋め込んだビットを、検出するプログラムを作成したいのですがどうしたらいいでしょうか? ソースコードは以下です int x,y,i,j; double Th = 128.0; /*2値化の際のしきい値 */ int x_StartPos, y_StartPos,x_EndPos,y_EndPos; /*バーコードが描画されている領域の座標 */ int num; y=0; while (y<biHeight){ x=0; while(x<biWidth){ if (Y[y][x]<Th) break; x++; } if (x < biWidth){ x_StartPos = x; y_StartPos = y; break; } y++; } if ((x_StartPos==0) && (y_StartPos==0)) { printf("画像中に黒領域が見つかりませんでした"); exit(-1); } x_EndPos=0; while (x<biWidth){ /*画面右までスキャンして、一番右端の黒のx座標を求める*/ if (Y[y][x] < Th)/* 黒い点であったら */ x_EndPos=x; x++; } if (x_EndPos==0) { printf(" バーコード右端が検出できませんでした\n"); exit(-1); } /*バーコード一番上のラインにおける、黒の画素の数を数える*/ x=y_StartPos; y=y_StartPos; num=0; //これまでに検出した黒画素の数 while(x<=x_EndPos){ if (Y[y][x] < Th) // 黒い点であったら num++; //黒画素数を +1 する x++; } *start_x= x_StartPos; *start_y= y_StartPos; *end_x = x_EndPos; *num_of_blackpixels =num; } void Embed_watermark(double Y[Y_SIZE][X_SIZE],double Y_out[Y_SIZE][X_SIZE], int sukasi[], int Length, int x_StartPos, int y_StartPos, int x_EndPos) { int x,y; int bitnum; double Th = 128.0; /*2値化の際のしきい値 */ for(y=0;y<biHeight;y++) //出力データに元データをコピー for(x=0;x<biWidth;x++) Y_out[y][x]=Y[y][x]; bitnum=0; //現在何番目のbitが埋め込み対象になっているのか x=x_StartPos; y=y_StartPos; //埋め込み開始 while(x<=x_EndPos){ if (Y_out[y][x]<Th){ //もし注目点が黒画素なら透かし埋め込み処理を行う printf("found! x=%d bitnum=%d\n",x,bitnum); if (sukasi[bitnum]==0){ // 「0」を埋め込むなら、該当画素を白くする Y_out[y][x]=255; } bitnum++; //埋め込み対象を次のビットにする } if (bitnum==Length) // もし全てのビットの埋め込み処理が終了したら break; x++; } printf("埋め込みが完了しました.埋め込み終了x座標=%d\n",x); } void main(void) { int Length = 20; // 埋め込む透かしのビット長 int suuchi[]={1,1,1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,1,0}; //埋め込む透かしビット char *input="bar.bmp"; char *output="out.bmp"; /* 画像中のバーコードが書かれている左上端の座標 */ int x_StartPos; int y_StartPos; int x_EndPos;//バーコードx座標の終端 int Num_of_Blacks; //バーコードの横方向の黒画素数(=埋め込めるビット数の上限)

  • c++での3次元グラフの生成

     320×218の120フレームの映像から3次元のグラフを生成してそのグラフを使って処理をしたいと考えています。  ノードには画素値を、エッジには画素間の画素値の差を重みとして与えた無向グラフを作成するプログラムを作っているのですがうまくできません。グラフ領域は動的に確保して処理したいと考えています。  なにか参考になるソースややり方がありましたら教えてください。プログラム初心者なのでいろいろ教えてください。OpenCVも使ってます。

  • 画像処理ソフトの作成

    Win32プログラムを使って画像処理を行えるプログラムを作成したいのですが、自分ひとりではどうにもなりません。 プログラムの仕様は、 (1) メニューバー「ファイル」、「画像処理」、「ヘルプ」の作成。 (2) 「ファイル」のカスケードメニュー「画像を開く」、「画像を保存する」、「プログラムを終了する」の実行。 (3) 「画像処理」のカスケードメニュー「ビットプレーンの作成」、「領域分割」、「輝度分布の計算」の実行。 この3点です。 何か役立つ参考書などがあれば教えてください。 実際にソースコードを教えていただけるとうれしいです。 よろしくお願いいたします。

  • 6x6ぼかしマスクをかけるプログラムを作りたい。画像処理の専門書に「6

    6x6ぼかしマスクをかけるプログラムを作りたい。画像処理の専門書に「62x62ピクセルの2値画像(内四方2ピクセルは余白領域)があり、それに6x6ドットのぼかしマスクを2ドットずつオーバーラップさせることで、15x15ピクセルの標本化パターンを作成する」との記述がありました。 3x3ドットによる画像のフィルタリングプログラム例は探せば見つかるのですが、偶数倍フィルターにおいてはどのように実装すればよいかがピンときません。プログラムの参考例を教えて欲しいです。

  • プログラム上で画像作成

    プログラム上での画像作成というのはできるのでしょうか? 例えば、関数を使って、tukutu(100,100); ※(xsize,ysize) 100*100サイズの画像を作るといったことはできるのでしょうか? しかし、作ったものをpicture1などに貼り付けられるものでないといけません。 もしくは、画像のリサイズを考えています。 例えば、rsize("a.bmp",100,100);  ※("元画像",xsize,ysize) といった感じで、もともとある画像を100*100のサイズに変える方法でもいいのですが。 画像の縮小拡大など難しいことは使わないで、もし指定のサイズより元画像が小さかったらあまりの部分に白領域を足して、大きかったら削ってしまうといった具合です。 とにかくプログラム上で指定したサイズでの画像を作成したいです。 ソフトはビジュアルスタディオを使っています。 分かる方がいましたらよろしくお願いします。

  • Win32 画像処理プログラミング

    Win32プログラムを使って画像処理を行えるプログラムを作成したいのですが、自分ひとりではどうにもなりません。 プログラムの仕様は、 (1) メニューバー「ファイル」、「画像処理」、「ヘルプ」の作成。 (2) 「ファイル」のカスケードメニュー「画像を開く」、「画像を保存する」、「プログラムを終了する」の実行。 (3) 「画像処理」のカスケードメニュー「ビットプレーンの作成」、「領域分割」、「輝度分布の計算」の実行。 この3点です。 関数や構造体を使って最初から組まなければ成りません。 なるべく詳しいプログラムを教えてください。 ( ソースコードを教えていただけるとありがたいです。 ) よろしくお願いします。

  • Photoshopの画像サイズ変更の内部処理について

    現在画像処理プログラムをC言語で作成しているのですが、画像の拡大縮小、 回転、平行移動の機能をもたせたアフィン変換のプログラムで、画像の濃度値 の補間方法を最近傍法、線形補間法、三次補間法の3つから選べるようにして います。 プログラムはほぼ完成し、ためしに画像の拡大縮小、回転、平行移動を含む様 々な処理をやらせてみましたが、目で結果を確認する限り、ほぼできています。 しかし、三次補間法を使用してある画像の縮小をやったときに、画像の縮小は できているのですが、画像処理ソフトPhotoshop5.5を使用したものと微妙に結 果が異なってしまいます。これが、後々の処理に効いてくるため、最終的な結 果に大きく影響します。 三次補間法では、対象画素の近傍の16個の濃度値で標本化関数の近似によっ て濃度値を計算するという一般的によく用いられている方法をとっています。 これを、近傍の16個の濃度値を用いて、標本化関数の近似ではなく、標本化 関数を用いて補間濃度を計算してみると、目で結果を確認する限り、少し Photoshop5.5に近づきました。 他にも、自分なりにいろいろ調べた結果、画像の縮小だけであれば、一度、変 換前の画像サイズと変換後の画像サイズの最小公倍数に拡大して、最小公倍数 分の画素の濃度値の平均をとっていくという手法もわかりました。 しかし、Photoshop5.5では、補間方法はnearlest,bi linear,bi cubicとなって おり、明らかに最近傍法、線形補間法、三次補間法の3つを用いています。私 の予想では、三次補間法の濃度値の補間法が違うのではないかと考えておりま す。 どなたか、Photoshopに限らず、一般的な画像処理ソフトなどで用いられている 画像サイズの変更の内部処理について教えていただけないでしょうか。

  • 画像をスライドさせるプログラム

    よろしくお願いします。 JavaScriptで書かれているフリーのソースを自分のホームページ用にアレンジしました。 そのプログラムは、何枚かの画像をマウスを乗せることによりスライドさせていくものです。 画像が3枚あり、最初はそれぞれ横幅が全体の33%ずつ均等で表示されているのですが、左の画像の上にマウスを乗せると、左の画像がスライドして横幅80%ぐらいにまで大きく表示されるようになりのこりの2枚は横幅10%ずつぐらいの大きさで表示されるようになる、といった具合です。 しかし、自分で少しいじってみると、縦幅、上から10%ぐらいのところにしかマウスを乗せないと反応しなくなりました。 下の方からマウスをのせてもスライドしません… 画像(プログラムの領域内)のどこにマウスを乗せても反応するようにするには、どうすればいいでしょうか?

  • 数学の図系の領域のプログラムについて

    数学の図系の領域のプログラムについて 今回、数学のボロノイ図という分野でこの図をプログラムで出そうとしているのですが、いろんなサイトを参考にしたのですが今一わかりません。。 ソースを書こうと思ったのですが、書ききれなかったため http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/voronoi-dia... このページのを見てもらえるとありがたいです。 http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/voronoi-dia... このソースのプログラム自体はこちらで。 このプログラムなんですが、これをランダムに表示するのじゃなくて、自分でクリックした場所に母点(KPのチェックボックスにチェックを入れて出る黒い点)を置くことができ、なおかつ、母点が2こ、3こと増えてくごとにこの領域の図を描けるようなプログラムにしたいです。 どこをどのように変えればいいでしょうか?ご指導よろしくおねがいします<m(_ _)m>