Discussion:
16bitグレースケールの画像の画素の値を得る方法
(too old to reply)
Hirosuke
2005-10-01 07:54:02 UTC
Permalink
最近、VisualBasic6.0を始めました。どうしても分からないことがあり、質問させてください。

今、16bitのグレースケールの画像を読み込んで解析するアプリケーションを作成しています。その解析の過程で、1画素あたりの値を取得したいのですが取得するためのコマンドが分かりません。PointメソッドではRGB値になってしまうので、うまく解析できていません。

どなたか画素値を取得する方法を教えてください。よろしくお願いします。
Yuichiro Ochifuji
2005-10-01 09:13:08 UTC
Permalink
落藤です。
Post by Hirosuke
今、16bitのグレースケールの画像を読み込んで解析するアプリケーションを作成しています。その解析の過程で、1画素あたりの値を取得したいのですが取得するためのコマンドが分かりません。PointメソッドではRGB値になってしまうので、うまく解析できていません。
16色ビットマップではなく、16bitグレースケールですか?
今、16bitの画像を用意できないので想像ですが、
自前で読み込むルーチンを作らねばならないかと思います。
Pointで読み込むとRGBが同じ値になっていると思いますが、
それでは、ダメですか?おそらく8bitに落とした値ですが。
--
############################################################
  落藤 勇一郎
############################################################
Hirosuke
2005-10-02 11:33:02 UTC
Permalink
落藤様

返信ありがとうございます。扱っている画像は、24bitのビットマップ画像です。(originというソフトで画像を行列化して確かめていたのですが、origin上では16bitに変換されるようです)画像はCCDカメラのモノクロモードで撮影したものをキャプチャしているものです。

画像の階調が画素値に反映されていれば問題ないのですが、うまく読み込めていません。白い部分でも一桁くらいの値しかかえってこないことがありました。純粋なグレースケールではないことに問題があるように思えてきました。画像の種類や仕組みの方を調べる必要があると感じました。

もし何かアドバイスやヒントがあれば教えていただけないでしょうか。お願いします。
Post by Yuichiro Ochifuji
落藤です。
Post by Hirosuke
今、16bitのグレースケールの画像を読み込んで解析するアプリケーションを作成しています。その解析の過程で、1画素あたりの値を取得したいのですが取得するためのコマンドが分かりません。PointメソッドではRGB値になってしまうので、うまく解析できていません。
16色ビットマップではなく、16bitグレースケールですか?
今、16bitの画像を用意できないので想像ですが、
自前で読み込むルーチンを作らねばならないかと思います。
Pointで読み込むとRGBが同じ値になっていると思いますが、
それでは、ダメですか?おそらく8bitに落とした値ですが。
--
############################################################
  落藤 勇一郎
############################################################
tamatama
2005-10-02 12:01:07 UTC
Permalink
Post by Hirosuke
画像の階調が画素値に反映されていれば問題ないのですが、うまく読み込めていません。白い部分でも一桁くらいの値しかかえってこないことがありました。純粋なグレースケールではないことに問題があるように思えてきました。画像の種類や仕組みの方を調べる必要があると感じました。
Gray = R * 0.3 + G * 0.59 + B * 0.11の式で変換しているのではないでしょうか?

http://www.openspc2.org/unit/color/RGB_to_Gray/
Yuichiro Ochifuji
2005-10-02 12:31:26 UTC
Permalink
落藤です。

ちょっと状況整理に質問です。
Post by Hirosuke
返信ありがとうございます。扱っている画像は、24bitのビットマップ画像です。(originというソフトで画像を行列化して確かめていたのですが、origin上では16bitに変換されるようです)画像はCCDカメラのモノクロモードで撮影したものをキャプチャしているものです。
キャプチャするソフトは何ですか?
キャプチャソフトでビットマップ画像のファイルに落として、
その後、VBのLoadPictureで読み込んでいるということでしょうか?
originというソフトは知りませんが、それでファイルを開くと16bitなのでしょうか?


以上のことから想像すると、BMPファイルとして、16bitグレースケールとして
正常に保存されていると考えられます。
そのBMPファイルを自力で解析すれば16bitグレースケールの輝度値を
読み込めるでしょう。
Post by Hirosuke
画像の階調が画素値に反映されていれば問題ないのですが、うまく読み込めていません。白い部分でも一桁くらいの値しかかえってこないことがありました。純粋なグレースケールではないことに問題があるように思えてきました。
モニター上の見た目は、どうですか?うまく表示されていますか?
--
############################################################
  落藤 勇一郎
############################################################
K.J.K.
2005-10-02 16:12:50 UTC
Permalink
K.J.K.$B$G$9!#(B

# $B2~9T$OE,@Z$K!#0zMQ$5$l$k$3$H$rA0Ds$H$7$F2~9T0LCV$r7h$a$F2<$5$$!#(B

"Hirosuke" wrote in message
$BJV?.$"$j$,$H$&$4$6$$$^$9!#07$C$F$$$k2hA|$O!"(B24bit$B$N%S%C%H%^%C%W2hA|$G$9!#(B
(origin$B$H$$$&%=%U%H$G2hA|$r9TNs2=$7$F3N$+$a$F$$$?$N$G$9$,!"(Borigin$B>e$G(B
$B$O(B16bit$B$KJQ49$5$l$k$h$&$G$9(B)$B2hA|$O(BCCD$B%+%a%i$N%b%N%/%m%b!<%I$G;#1F$7$?(B
$B$b$N$r%-%c%W%A%c$7$F$$$k$b$N$G$9!#(B
$B$I$N$h$&$K%-%c%W%A%c$7$?$N$+!"$K$b$h$j$^$9!#(B
$B$b$7(BDirectShow$B$rMQ$$$F$$$k$N$G$"$l$P!"(B
$B!V(BGDI$B$G$O$"$j$($J$$(B((A)RGB$B$N$_(B)$B$1$I!"(BDirectShow$B$G$O$"$j$($k(B(YUV)$B!W(B
$B7A<0$K$J$C$F$$$k2DG=@-$b$"$j$^$9!#(B
--
K.J.K.
***@koalanet.ne.jp
K.J.K.
2005-10-02 16:20:50 UTC
Permalink
K.J.K.$B$G$9!#(B

# $BJdB-!#(B

"K.J.K." wrote in message
Post by K.J.K.
$B$b$7(BDirectShow$B$rMQ$$$F$$$k$N$G$"$l$P!"(B
$B!V(BGDI$B$G$O$"$j$($J$$(B((A)RGB$B$N$_(B)$B$1$I!"(BDirectShow$B$G$O$"$j$($k(B(YUV)$B!W(B
DIB$B%U%!%$%k$O!"(BBITMAPFILEHEADER , BITMAPINFOHEADER ...
$B$H$$$&9=B$$K$J$C$F$$$^$9$,!"(BBITMAPINFOHEADER.biCompression
$B$r%A%'%C%/$9$k$3$H$G!"$I$N$h$&$JJ];}7A<0$K$J$C$F$$$k$N$+!"(B
$B$rD4$Y$k$3$H$,$G$-$^$9!#(B
--
K.J.K.
***@koalanet.ne.jp
Hirosuke
2005-10-04 09:56:33 UTC
Permalink
返信していただいた皆様へ

数々の返信、ありがとうございました。どうやら画像を
キャプチャする際にグレースケールでなくRBGでキャプ
チャされていたようです。画像自体はモノクロモードで
撮影していてキャプチャした画像自体もモノクロなので
すが、所々緑や赤にうっすらと色がついているところも
あり、グレースケールではないのではないかと考えられ
ます。

キャプチャした画像のピクセルあたりのRGB値を分解し
て平均をとるアプリケーションを簡易的に作成してみま
した。処理した画像でPointメソッドを使って値を読み
込むと、24bitグレースケールに変換されていることが
確認できました。

多少、処理が重くなるのですが、一度RGB値を分解
してから処理を行うようにすれば問題ないと思います。

数々の有益なアドバイスやヒント、ありがとうございました。
Ishidan
2005-10-02 05:29:14 UTC
Permalink
Post by Hirosuke
今、16bitのグレースケールの画像を読み込んで解析するアプリケーション
を作成しています。その解析の過程で、1画素あたりの値を取得したいの
ですが取得するためのコマンドが分かりません。PointメソッドではRGB値
になってしまうので、うまく解析できていません。
どなたか画素値を取得する方法を教えてください。よろしくお願いします。
どのような形式の画像でしょうか。
DICOMとかなら専用のライブラリを使用するのが早道では。
圧縮していない16ビット値がファイルにおとしてあるなら、画像
の部分をIntegerの2次元配列に読み込んでしまう手も有ります。

許される範囲で具体的な情報を提示したほうが、適切なレスを
得られると思います。

石段
Hirosuke
2005-10-02 11:39:02 UTC
Permalink
石段様

返信ありがとうございます。画像の種類は、24bitビットマップ画像です。CCDカメラのモノクロモードで撮影した画像をキャプチャしています。

グレースケールというよりは、モノクロの画像であると思います。Pointメソッドを利用したRGB値の取得では、階調に対応した画素値を得ることができません。画像の種類や形式について勉強したいと思います。

もしアドバイスやヒントがあれば、教えてください。よろしくお願いします。

ヒロスケ
Post by Ishidan
Post by Hirosuke
今、16bitのグレースケールの画像を読み込んで解析するアプリケーション
を作成しています。その解析の過程で、1画素あたりの値を取得したいの
ですが取得するためのコマンドが分かりません。PointメソッドではRGB値
になってしまうので、うまく解析できていません。
どなたか画素値を取得する方法を教えてください。よろしくお願いします。
どのような形式の画像でしょうか。
DICOMとかなら専用のライブラリを使用するのが早道では。
圧縮していない16ビット値がファイルにおとしてあるなら、画像
の部分をIntegerの2次元配列に読み込んでしまう手も有ります。
許される範囲で具体的な情報を提示したほうが、適切なレスを
得られると思います。
石段
Loading...