【無料配信♪】Renta !全タテコミ作品第1話

ビットマップの画像で太い曲線が書いてあるデータをVBで読み込み,それを白黒2階調にして表示させ,輪郭を抽出し,その曲線の平均のライン(中心のライン)を取得するというプログラムを制作しています。
現在,データ取り込み&白黒化で行き詰っています。
詳しく解説があるサイトやサンプルを紹介していただければ幸いです。

環境
Visual Basic 6.0
Windows 2000

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは。



http://www001.upp.so-net.ne.jp/shige-3peace/VBFr …
こちらの方が、2値化などのサンプルを
VB6で用意されていました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
とりあえず,2値化に成功しました。

お礼日時:2006/04/10 01:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB.NETにおける二値化処理の高速化

いつも参考にさせて頂いております。
現在、VB.NET(VS2003/.NET Framework1.1)を使用して画像の二値化処理のプログラムを作成しております。
処理する事は簡単で、ビットマップファイルのRED要素を取り出し、閾値内なら白に変換して二値化するプログラムです。
以下がそのプログラムです。
-----
'変換する前の画像をファイルから読み込む
Dim img1 As System.Drawing.Bitmap = New System.Drawing.Bitmap(filepath)
'変換後のビットマップ
Dim img2 As System.Drawing.Bitmap = New System.Drawing.Bitmap(img1.Width, img2.Height)
'二値化処理
Dim b As Byte
For i = 0 To img1.Width - 1
For j = 0 To img1.Height - 1
b = img1.GetPixel(i, j).R
If b >= 閾値下限 And b <= 閾値上限 Then
img2.SetPixel(i, j, Color.White)
Else
img2.SetPixel(i, j, Color.Black)
End If
Next
Next
PictureBox1.Image = img
-----
これで処理は出来るのですが、ファイルが大きい場合は、非常に時間が掛かってしまいます。処理速度はCPUの速度にもよると思うのですが、できるだけ高速化したのですが、何かよい知恵があればご教授頂けると助かります。よろしくお願いいたします。
XP Pro SP2/VS2003/VB.NET/.NET Framework1.1

いつも参考にさせて頂いております。
現在、VB.NET(VS2003/.NET Framework1.1)を使用して画像の二値化処理のプログラムを作成しております。
処理する事は簡単で、ビットマップファイルのRED要素を取り出し、閾値内なら白に変換して二値化するプログラムです。
以下がそのプログラムです。
-----
'変換する前の画像をファイルから読み込む
Dim img1 As System.Drawing.Bitmap = New System.Drawing.Bitmap(filepath)
'変換後のビットマップ
Dim img2 As System.Drawing.Bitmap = New System.Drawing.Bi...続きを読む

Aベストアンサー

If b >= 閾値下限 And b <= 閾値上限 Then
これを
If b >= 閾値下限 AndAlso b <= 閾値上限 Then
に変えてみる。

If 条件A And 条件B
では、必ず条件A と条件B を演算してしまうが、
If 条件A AndAlso 条件B
では、条件A が False なら条件B の演算は行わない。

Q画像のピクセルデータの取得

はじめまして、VBを使ってまだ数日なのですが
2つの画像を比べる機能を作ることになりました.

流れとしては
1.画像を読み込む
2.画像データの1ピクセルごとのデータを配列(?)抜き出す
3.(2)を画像A,画像Bで行い. 一致を調べるというものです.

いかんせん,まだ基礎の基礎を習得したばかりで,2の段階でつまづいております.

アドバイス,参考サイトなど教えていただきたく思います.
よろしくお願いします.

Aベストアンサー

bitmapに変換して。。。はだめです?

b as new bitmap(PictureBox1.Image)
なんかのループ
c = b.GetPixel(x,y)
な感じ

http://msdn2.microsoft.com/ja-jp/library/system.drawing.bitmap.getpixel(VS.80).aspx

QVBAで配列からbmp画像を出力する方法

VBAで配列からbmp画像を出力する方法を教えてください。

例えば、
dim a(255,255)
で作成した二次元配列があり、それぞれの中に0~255の数値が格納されているとします。
この画像からグレースケールあるいは任意の配色で
256x256の解像度のbmp画像を出力するプログラムを
VBAで作りたいのですがどのようにすれば良いですか?


検索して調べたのですが、
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=54343;id=excel
http://akadamashy.blog68.fc2.com/blog-entry-915.html

のサイトにビットマップ画像を出力するための
プログラムが記載されていました。

しかしながら、どうしても配列からどうやって出力すれば良いか分かりません。

どなたか教えてください。

Aベストアンサー

> Sub sample()のところでp(500,500)の各配列に1か0を代入していますが、
> 0~255までのカラーを使いたい場合には、
> With RGBQUAD(0)で0~255まで全て定義する必要があるのでしょうか?

先の回答で示したページをよく読んでください。

> 変数kを0から7まで繰り返して、* 2 ^ (7 - k)を足していく操作が理解できないのですが
> 何をやっているのでしょうか?

実際にそのコードを実行し、数値を変更したりしてどのような画像が出来上がるのか試してみてください。理解しなくても関係の無いところだと思われますが。

> また、式の中で「\」マークが出てきますがこれは何を意味しているのでしょうか?

実際にご自身で計算式を作って試してみればわかることです。

以下の2行を実行してみてください。

Debug.Print 10 \ 3
Debug.Print 10 / 3

演算子
http://www.officepro.jp/excelvba/basic/index6.html

何もせず示したページもろくに読まないで質問ばかりするのはやめましょう。時間の無駄です。

> Sub sample()のところでp(500,500)の各配列に1か0を代入していますが、
> 0~255までのカラーを使いたい場合には、
> With RGBQUAD(0)で0~255まで全て定義する必要があるのでしょうか?

先の回答で示したページをよく読んでください。

> 変数kを0から7まで繰り返して、* 2 ^ (7 - k)を足していく操作が理解できないのですが
> 何をやっているのでしょうか?

実際にそのコードを実行し、数値を変更したりしてどのような画像が出来上がるのか試してみてください。理解しなくても関係の無いところだと思われま...続きを読む


人気Q&Aランキング