今年度卒業のゼミ生、卒論ではFourier変換の利用をテーマに進めている。
とりかかりが遅かったため、かなりピンチな状況だ。
何人かがデジタル画像処理をテーマにしていることもあって、
画像処理をブラックボックス化してしまわないで
教育的に目に見える形で処理させたい。
そこで、BMP画像をEXCELで処理できるように
BMP画像からRGBに分解してCSV形式で出力するプログラムを
(半分は趣味を兼ねて)10進BASICで作ったので、
ここに公開しておきます。
10進BASICプログラム→[bmp2csv.bas]
REM [bmp2csv.bas] REM BMP画像データをRGBに分解し3つのCSVファイルとして出力する REM REM office2003のEXCELシート互換にするため REM BMPの横幅は256pxまで、縦幅は65536pxまで REM REM [使用法] REM (1)このプログラムと同じフォルダにBMP画像を置く REM (2)読み込む画像ファイル名はf$="○○"で指定する REM (3)実行するとCSV形式でRGB情報が REM ○○_rr.csv,○○_gg.csv,○○_bb.csv REM として同じフォルダに出力される OPTION ARITHMETIC NATIVE SET COLOR MODE "NATIVE" LET f$="neko" GLOAD f$ & ".bmp" ASK PIXEL SIZE (0,0; 1,1) bw,bh DIM bc(bw,bh), rr(bw,bh), gg(bw,bh), bb(bw,bh), bf(bw,bh), dr(bw), dg(bw), db(bw) ASK PIXEL ARRAY (0,1) bc SET BITMAP SIZE bw*4,bh FOR y=1 TO bh FOR x=1 TO bw LET c=bc(x,y) LET rr(x,y)=MOD(c,256) LET c=INT(c/256) LET gg(x,y)=MOD(c,256) LET bb(x,y)=INT(c/256) NEXT x NEXT y OPEN #1:NAME f$ & "_rr.csv", RECTYPE INTERNAL ERASE #1 OPEN #2:NAME f$ & "_gg.csv", RECTYPE INTERNAL ERASE #2 OPEN #3:NAME f$ & "_bb.csv", RECTYPE INTERNAL ERASE #3 FOR y=1 TO bh FOR x=1 TO bw LET dr(x)=rr(x,y) LET dg(x)=gg(x,y) LET db(x)=bb(x,y) NEXT x MAT WRITE #1: dr MAT WRITE #2: dg MAT WRITE #3: db NEXT y CLOSE #3 CLOSE #2 CLOSE #1 ! 確認のためRGBそれぞれで画像を表示してみる MAT gg=256*gg MAT bb=65536*bb MAT PLOT CELLS, IN 1/4,1; 2/4,0 :rr MAT PLOT CELLS, IN 2/4,1; 3/4,0 :gg MAT PLOT CELLS, IN 3/4,1; 1,0 :bb END