目次
前
次
画像解析
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
の数値を、見たいライン番号に変更します。
テキストファイルに保存したヒスグラムは、次のようになります。
**********
***********
***********
***********
***********
***********
***********
***********
***********
***********
***********
************
***********
************
************
************
************
************
*************
*************
*************
*************
*************
*************
************
*************
*************
*************
***************
***************
***************
****************
****************
****************
****************
*****************
****************
*****************
*****************
*****************
******************
******************
******************
******************
******************
********************
*************************
*************************
********************
*******************
*******************
*******************
******************
******************
******************
*******************
*******************
*******************
*******************
********************
*******************
********************
********************
********************
********************
**********************
*********************
**********************
**********************
***********************
************************
*************************
********************************
*************************************
************************************
************************************
******************************************
*********************************************
************************************************
**************************************************
****************************************************
*****************************************************
******************************************************
*******************************************************
*******************************************************
********************************************************
********************************************************
*******************************************************
***************************************************
***************************************************
**************************************************
**************************************************
***********************************************
*********************************************
*******************************************
*******************************************
******************************************
******************************************
******************************************
*******************************************
********************************************
*********************************************
********************************************
********************************************
*****************************************
***************************************
**********************************
*********************************
*******************************
******************************
******************************
******************************
*****************************
*****************************
****************************
****************************
****************************
*****************************
*****************************
******************************
******************************
*******************************
*********************************
***********************************
***********************************
************************************
*************************************
***************************************
目次
前
次