目次

画像解析

 GBCから取得した画像データを解析してみます。

 画面表示してみると、最下段の部分に画像でない部分がありました。



 (この画像は、MCRコースの一部を膝の上におき、撮影しました。)

 GBCに使われている人工網膜チップのデータシートから、パラメータ設定に
 よっては、128ピクセルx128ラインのうち、最終5ラインには、撮影データ
 が入らないと説明されています。

 MCRマシンを動かすための情報には、最終5ラインを含めません。

  MCRコースには、中央に白と灰の部分がありますが、GBCでは判定できる
 ほどの輝度差がありません。

 黒白の判定をする場合は、白と灰を同じにした方が考えることが少ない
 ので、好都合です。

 この画像は、グレイのパンツをはきコースの一部を膝に乗せているため
 パンツも白に見えています。

 MCRコース上を走行するための情報は、白と黒の混じった帯と見なせれば
 よいので、灰を白と見せてもらえるので、センサーデータを生成するとき
 に、灰を考えないでよくなります。


1ラインの情報取得

 GBCは、128ピクセルx128ラインの画像データを生成します。  ラインごとの、GrayScale値がどうなっているのか調べる目的で  Tcl/Tkによるスクリプトを作成しました。  1ラインごとに、次の内容を生成します。 ---------------------------------------------------------------------- #!/usr/local/bin/wish # ana1.tcl # open set fd_in [open "sx1.txt" "r"] # initialize or clear set min 255 set max 0 set sum 0 set param "" # handling while { [gets $fd_in sbuf] >= 0 } { # separate foreach e $sbuf { set tmp [split $e " "] set val 0 # calculate value foreach x $tmp { set val [expr 10 * $val + $x] } # update maximum if { $max < $val } { set max $val } # update minimum if { $min > $val } { set min $val } # add set sum [expr $sum + $val] } # calculate average set avr [expr $sum / 128] # arrage format set param [format "%3d %3d %3d %3d" $max $min $avr [expr $max - $min]] # show puts $param # initialize or clear set min 255 set max 0 set sum 0 set xbuf "" } # close close $fd_in ----------------------------------------------------------------------  使い方は簡単です。  次のように打ち込みます。  tclch85 ana1.tcl > ana1.txt{enter}  (UNIXでは、tclsh85をtclshとします。)  テキストファイルに内容を保存して、ゆっくりと内容を見ます。  画像データを格納しているテキストファイルを変更したい場合は   set fd_in [open "sx1.txt" "r"]  のテキストファイル名を変更します。  テキストファイルに保存したデータは、次のようになります。 224 43 108 181 225 183 219 42 225 224 224 1 225 224 224 1 225 221 222 4 223 222 222 1 223 222 222 1 224 222 222 2 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 223 3 223 222 222 1 223 222 222 1 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 223 3 223 222 222 1 223 222 222 1 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 222 3 223 222 222 1 223 222 222 1 225 222 222 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 223 3 223 222 222 1 223 222 222 1 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 222 3 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 223 3 223 221 222 2 223 222 222 1 225 223 224 2 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 221 223 4 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 222 223 3 223 222 222 1 225 222 223 3 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1 225 224 224 1

ヒストグラム作成

 画像データの変化を知りたいことがあります。  指定ラインの、GrayScale値がどう変化するのか調べる目的で  Tcl/Tkによるスクリプトを作成しました。  指定ラインの変化を'*'を使ったバーで表示します。 ---------------------------------------------------------------------- #!/usr/local/bin/wish # hist.tcl # open set fd_in [open "sx1.txt" "r"] set target 0 # handling set index 0 while { [gets $fd_in sbuf] >= 0 } { # judge line if { $target == $index } { # separate foreach e $sbuf { set tmp [split $e " "] set val 0 # generate value foreach x $tmp { set val [expr 10 * $val + $x] } # adjust set last [expr $val / 4] # generate bar set xbar "" for { set i 0 } { $i < $last } { incr i } { set xbar "$xbar*" } # show puts $xbar } } # increment incr index } # close close $fd_in ----------------------------------------------------------------------  使い方は簡単です。  次のように打ち込みます。  tclch85 hist.tcl > hist.txt{enter}  (UNIXでは、tclsh85をtclshとします。)  テキストファイルに内容を保存して、ゆっくりと内容を見ます。  画像データを格納しているテキストファイルを変更したい場合は   set fd_in [open "sx1.txt" "r"]  のテキストファイル名を変更します。  ラインを変更したい場合は   set target 0  の数値を、見たいライン番号に変更します。  テキストファイルに保存したヒスグラムは、次のようになります。 ********** *********** *********** *********** *********** *********** *********** *********** *********** *********** *********** ************ *********** ************ ************ ************ ************ ************ ************* ************* ************* ************* ************* ************* ************ ************* ************* ************* *************** *************** *************** **************** **************** **************** **************** ***************** **************** ***************** ***************** ***************** ****************** ****************** ****************** ****************** ****************** ******************** ************************* ************************* ******************** ******************* ******************* ******************* ****************** ****************** ****************** ******************* ******************* ******************* ******************* ******************** ******************* ******************** ******************** ******************** ******************** ********************** ********************* ********************** ********************** *********************** ************************ ************************* ******************************** ************************************* ************************************ ************************************ ****************************************** ********************************************* ************************************************ ************************************************** **************************************************** ***************************************************** ****************************************************** ******************************************************* ******************************************************* ******************************************************** ******************************************************** ******************************************************* *************************************************** *************************************************** ************************************************** ************************************************** *********************************************** ********************************************* ******************************************* ******************************************* ****************************************** ****************************************** ****************************************** ******************************************* ******************************************** ********************************************* ******************************************** ******************************************** ***************************************** *************************************** ********************************** ********************************* ******************************* ****************************** ****************************** ****************************** ***************************** ***************************** **************************** **************************** **************************** ***************************** ***************************** ****************************** ****************************** ******************************* ********************************* *********************************** *********************************** ************************************ ************************************* ***************************************
目次

inserted by FC2 system