4EI-実験の最近のブログ記事

画像探索(最小二乗法)

創造工学の競技部門向けの予備実験として、簡単な画像探索プログラムの実験を行った。

処理の内容は、大きな元画像の中から、その一部をクリップした部分を検索するプログラムを動かしてもらった。 サンプルでは、全2次元空間をしらみつぶしに探す方法で、極めて遅いプログラムを示し、 改良高速化をしてもらうこととした。

ppm画像の読み込みサンプル

4年当初では、コマンドライン引数やら、画像形式の読み込みなどが理解していないため、 下記の readppm.cxx を示して、ppm画像の読み込み処理と、コマンドライン引数を説明。

画像探索プログラムのサンプル

前記プログラムがわかった所で、画像探索プログラムのサンプルコードを示す。 このプログラムは、1ドット毎に左上から右下まで移動させながら、 画素のRGBのズレの合計スコアの最小の場所を記憶させる手法。

自宅マシンで動かすと、600x400程度の画像の中から、100x100程度の画像を検索するのに、40秒ほどかかる。 実験では、動作確認のあと、処理の高速化をしてもらった。

また、問題が起こりそうな事例ということで、 検索画像が輝度補正がかっている場合(HSVなりYCbCrなりの色空間で比較が必要)や、 ぼけた画像でも正しく動くのか試してもらった。

4年の前期実験では、2週分を創造工学でのシステム作りの導入とするための、 基礎実験を行っている。クラスを3グループに分け、私の担当は初回にPHPによる、 Webプログラミングの説明。これにより簡単な掲示板やアンケートを作ってもらった。

2回目の今日は、1日実験でPerlと正規表現の実験を行った。 最初に、超単純英語によるBot作りをネタに、Perlの基本文法と、正規表現を体験してもらう。 理解度が速い人向けに、後半はメールデータを題材にしながら、 Jcode.pmを用いた文字コード変換、headerのmime_decodeを説明し、 このメールデータの中から、From,Toの部分を抽出するプログラムを作ってもらう。

#!/usr/bin/perl
# 超基本英語によるBot
while( <> ) {
    $line = $_ ;
    if ( $line =~ /like/ ) {
        if ( $line =~ /^(.*)\s+like(|s)\s+(.*)\.$/ ) {
            print "$1 は $3 が好きです。\n" ;
        }
    }
}
#!/usr/bin/perl
# メールデータの文字コード変換
use Jcode ;
my $head = 1 ;
while( <> ) {
    $line = $_ ;
    if ( $head ) {
        print Jcode->new( $line )->mime_decode->utf8 ;
        if ( $line =~ /^$/ ) {
            $head = 0 ;
        }
    } else {
        print Jcode->new( $line )->utf8 ;
    }
}
Perlを初めて使ってもらうので、 暗黙変数$_とのマッチングや、 「式 if ( 条件 ) ;」といった Perl らしい節操のない書き方は、説明を避けた。

4EIの実験時間を用いた創造工学演習向けの基礎講習会の2回目。 40人を2つに分けて実施するため、場所が狭かったり実験が困難だったり。 H8の割り込み講習会の参加グループの方が、実際の実験環境の準備が大変で、 割り込みやモータ制御の文献調査になってしまった。

PHP講習会の方は、簡単にアクセスカウンタのプログラムを説明し、 何らかのファイル操作を伴うプログラムを作成し、 レポートに「この知識を自分のテーマに使えそうか?」、 「PHPのプログラムの起動の際のユーザ権限」、 「ファイルロックなどの問題点」などを、各自選んでレポートとして記載し提出してもらう。

<?php
    if ( ($fp = fopen( "count.txt" , "r" )) != FALSE ) {
        $count = fgets( $fp ) ;
        fclose( $fp ) ;
    } else {
        $count = 0 ;
    }
    $count++ ;
    print "counter = $count" ;
    // このプログラムのディレクトリは、
    // 誰からも書き込みできる許可を与えておく。
    // 別途危険性は説明する。
    if ( ($fp = fopen( "count.txt" , "w" )) != FALSE ) {
        fputs( $fp , "$count" ) ;
        fclose( $fp ) ;
    }
?>
プログラムをちょっと修正したら、レポートを書きだすと思っていたけど、 予想に反して、くだらない機能追加なんだけど、全員が積極的に「修正」している。
# レポート作成に時間を取ってほしいんだけど....

今年度の創造工学の活性化のために4年実験の第1テーマを導入教育につかうにあたり、 第1回目に、PHPなどのネットワーク系技術の講習会と、H8などを用いる際に必須の割り込みなどの理解を行うための講習会兼簡単な4EI実験として講義を行った。

PHP講習会

インターネット技術の基礎知識を理解してもらうために、PHPを用いて簡単な講習会を行う。 (斉藤担当)

  • 複雑な処理では、複数プロセスの協力も必要であることから、CGIの原理を説明をネタに、 プロセスが協力して処理を行うための問題点として、 SIGNAL,環境変数渡し,共有メモリ,パイプ,スレッドなどの用語も簡単に紹介する。
  • HTMLの簡単な説明と、サーバにページを登録し、簡単なHPを設置するまでを説明
  • PHPの簡単な例題を解説し、外部から渡される$_GET,$_POSTなどの変数を説明
  • 例題として、何らかの簡単な処理プログラムを作ってもらう
  • 最後にWeb系プログラムの必須のセキュリティネタとして、入力フォームにタグを埋め込む手法の問題点を1つだけ紹介。

H8割り込み講習会

H8などの組み込み系で何らかのシステムを作る場合には必須となる、割り込みなどの 概念の紹介として、割り込み関数の登録や割り込みが有効になるための設定などの 説明を行う。(担当高久)

組み込み系のC言語のプログラムを理解する際に必須となる、#pragma や、 volatile 宣言などの概念などの説明も行う。 割り込みとしては、時計やPWMによるサーボモータの制御も応用例として多いため、 タイマーA,タイマーWなどを例題として、解説を行う。

パルス回路の考察のヒント

例年パルス回路の実験を行うと、 『非安定マルチバイブレータ回路の負荷の影響の考察が解らない』 という質問多数。そこでヒント資料を公開する。
# といっても、答えを教えては意味がない...

体が筋肉痛...

昨日の田植えの手伝いの後遺症にて筋肉痛。 学生には「ダイエットになったでしょ!」と突っ込まれる。
# 先日の遠足では最終的に筋肉痛が出なかっただけに....

2015年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

アーカイブ

Google

このアーカイブについて

このページには、過去に書かれたブログ記事のうち4EI-実験カテゴリに属しているものが含まれています。

前のカテゴリは3EI-実験です。

次のカテゴリは5EI-実験です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。