記事一覧

UWSCの画像認識


この記事は、広告を含む場合があります。

以前、PC自動化のソフトウェアとしてUWSCを紹介しました。今回は、そのUWSCの強力な機能のひとつである画像認識について、私が理解したことを書いておきます。私も勉強中なので、間違いがあったらごめんなさい。

人間の画像認識

いきなりですが、次の画像を見てください。

画像認識

下のイラストが示すものと等しいものを上のイラストから選ぶという問題です。

ズバリ、真ん中が正解です。

おそらく、下のイラストを “リンゴ” と認識してから、上のイラストを “自動車”、“リンゴ”、“ソフトクリーム” と認識して、同じ “リンゴ” を選択したと思います。

“は?バカにしてんの?死ぬの?” って思いましたよね。でもこれ、コンピューターには難しいのです。

今でこそ、人工知能 (AI) が出てきてインテリジェントになりつつありますが、同じ “ような” ものを比較するのはコンピューターが苦手とすることなのです。

コンピューターの画像認識 (UWSC)

ここからは、コンピューターによる画像認識を考えます。と言っても、やり方 (アルゴリズム) はいろいろありますので、UWSCを例にします。

UWSCの画像認識では、モニター上から特定の画像を見つけだすことができます。

UWSCの画像認識を使うプログラム (ソースコード) です。

// unco.bmpを見つけてクリック
ifb chkimg("unco.bmp")
  mmv(g_img_x, g_img_y)
  btn(left, click)
endif

プログラミング風に着色するとカッコイイ。

これは、ビットマップ形式の “unco.bmp” という画像があれば、その画像の左上にカーソルを移動、左クリックするというプログラムです。

このビットマップ形式というのがキモとなります。

圧縮と非圧縮の画像

画像ファイルには、圧縮非圧縮があります。

基本的に、ビットマップ形式は非圧縮です。そして、UWSCは、ビットマップしか認識しません。(これは重要)

ちょっと難しい話になりますが、なぜUWSCの指定は非圧縮なのかです。

次のような画像があるとします。数字は行と列です。

  1 2 3 4 5
1 ■■■■■
2 ■■■■■
3 ■■■■■

圧縮と非圧縮をそれぞれ日本語で表すと。

圧縮 非圧縮
1-1から2-5は黒、3-1から3-5は橙。 1-1は黒、1-2は黒、1-3は黒、1-4は黒、1-5は黒、2-1は黒、2-2は黒、2-3は黒、2-4は黒、2-5は黒、3-1は橙、3-2は橙、3-3は橙、3-4は橙、3-5は橙。

非圧縮はデータ量が大きいのがわかりますよね。

そんな非圧縮の長所は、探しやすいところです。

例えば、“3-2は (だいだい) か?” を認識する場合、非圧縮には答えが書いてあります。

対して、圧縮では、非圧縮に戻してから探すことになります。(非圧縮に戻せない形式もあります)

ですから、UWSCは非圧縮であるビットマップを指定しているのです。

ちなみに、ここでいうビットマップとはウィンドウズPCのモニターに表示するための画像形式です。よって、UWSCは、ウィンドウズ以外では画像を認識しません。

テキストとバイナリー

画像がどのようなデータ構成で、コンピューターがどう認識しているかについてです。

コンピューターには画像や文書などいろいろなファイルがありますが、大きくテキストファイルバイナリーファイルに分けられます。人間が簡単に認識・編集できるのがテキスト、できないのがバイナリーです。

画像はバイナリーに分類されます。

テキストもバイナリーも、コンピューターでは二進数 (Binary) として扱うので、認識も同じ方法です。ということで、より単純な文字検索を例に考えます。

検索文字列 対象文字列
頭痛と腹痛
111001111001011110011011 111010011010000010101101
111001111001011110011011
111000111000000110101000
111010001000010110111001
111001111001011110011011
と腹

コンピューターによる検索は二進数のデータ比較ですが、最終的には人間が読みやすいように文字に変換して表示されます。

さて、上の二進数の “1” か “0” のどちらか1桁を、ビット (bit) といいます。8桁ごとに扱うことが一般的なので、8bitを1バイト (Byte) と呼びます。

文字の場合は1文字につき、1〜4Byte (8〜32bit) で構成されます。

画像の場合は、文字通り桁違いなサイズとなります。例えば、1MB (メガバイト) の写真1枚は、およそ830万ビットです。

コンピューターは厳密ですから、“1” と “0” がひとつでも違うと、別のものとして認識します。これは、人間にはできませんね。

ビットマップのヘッダーとデータ

次は、ビットマップのデータ構成についてです。

ビットマップファイルは、ヘッダーデータで構成されています。

ヘッダー部分には、ファイルの形式 (ビットマップ) やヘッダーの長さ,ファイルサイズ,縦横ピクセル,色数などの情報が書き込まれています。UWSCがヘッダーを読み取っているかはわからないです。

データ部分は画像の本体で、ピクセルごとの色を表します。ビットマップのバージョンによっても違いますが、1ピクセルあたり3Byte (赤緑青それぞれ1Byte) が多いようです。

ビットマップのファイルから、データ部分だけを抜き出せば、画像の比較に使う二進数のデータが手に入ります。

モニターとビットマップのデータ比較

上に書きましたが、ビットマップとはウィンドウズPCのモニターに表示する画像形式です。つまり、モニターは1枚の大きなビットマップ画像なのです。

モニターを対象画像、用意したほうを検索画像とすれば、文字検索と同様にデータ比較が可能です。

UWSCでは、一致した画像の有無や個数,座標を取得できます。

UWSCの何がすごいって、このソフトの登場が1999年なんですね。20年以上も前にこんな技術があるなんて、さすがIT先進国()の日本です。

ということで、この画像認識を使えば、モニター上の特定の場所をクリックして稼げます。

閲覧ありがとうございました。

関連記事
にほんブログ村 その他生活ブログ 一人暮らし貧乏・生活苦へ

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: こんばんは

ひ****さま。(非公開コメントのため。念のため)

こんばんは。コメントをありがとうございます。

写ルンですのフラッシュ用のコンデンサーですね。

フラッシュ用のスイッチを押さなければ、コンデンサーに充電はされていないはずです。
「ピュイー」みたいな音がするやつですね。

スイッチが押してあるのであれば、自然放電させるにはちょっと時間がかかりますね。

・放電させる場合
届くのであれば、湿らせた綿棒とかなら安全だと思います。
デカいコンデンサーの足元の2本をショートさせると、ゆっくり安全に放電します。

もちろん、手は濡れていない状態でお願いします!


金属でショートさせて、無理やり放電するのがいちばん早いですが、近くの部品が弾けて飛ぶので注意が必要です。
やる場合は、メガネとかを着用してください。
また、使った金属が少し融けるので、いらないものでやったほうがいいです。
刃物とかドライバーとかなら、使いにくくなります。

・放電させない場合
外装を組み立てて、内部の金属がむき出しでないのなら、そのまま捨てても安全です。


私の思い出話になりますが、中学生のころ、壊れた使い捨てカメラを拾ってきて、フラッシュの回路で遊んだことがあります。

充電したコンデンサーに触ると、ビリっときてホントに痛いので、触らないほうがいいです。

次に、金属でショートさせると、部品が弾けて壊れました。

ちなみに、「蚊取りラケット」なる製品が同じものを使っているようです。こちらも痛いです。

なので、指でやるのはオススメしません。


参考になればうれしいです。


レンズって、自作できるのですね。すごいです。

またのコメントもお待ちしています。

記事名:UWSCの画像認識.
返信日:2022年6月21日.

おはようございます。

早速の的確なご回答ありがとうございます。

やはりいじったことがあったのですね。何となくしゅうさんならやってそうかなと思いました。w

>湿らせた綿棒とかなら安全だと思います。
デカいコンデンサーの足元の2本をショートさせると、ゆっくり安全に放電します。

え!湿らせた綿棒で大丈夫なんですか?Σ(・ω・ノ)ノ!

こんな方法があるんですね。さすがです。それでも素人的にはちょっと怖いですけど。(;´・ω・)

水分でショートさせるという原理かな?水分だと伝導率が鉄より低い?からこんなことができるんですかね?というよりは伝導+抵抗器的な役割なのかな?


普通の綿棒の片方を水に浸けて湿らせてから、その反対側を手で持って接点にショートさせればいいですか?

ショートさせる時間はどれくらいでしょうか?30秒くらい?

湿らせた綿棒ショートに興味深々です。

Re: おはようございます。

ひまわりさま。

こんにちは。コメントをありがとうございます。

抵抗器(プリント基板とかについているやつ)があればいいですが、選ぶのが難しいですね。
抵抗値が小さすぎるとやっぱり火花が散りますので……

コンデンサーの足の間に届くのであれば、綿棒で大丈夫だと思います。
綿棒の片方を湿らせて、“乾いた手で” もう片方 (乾いたほう) を持ってやれば大丈夫です。

湿った綿棒のほうが、鉄などよりはゆっくり放電させることができます。抵抗が鉄より大きいので。(とは言っても、放電完了はほぼ一瞬です)
水が蒸発するような音とか振動がなければ、放電し終わっているはずです。

さらに、綿棒には温度を下げながらという意味もあります。
鉄とかでは、一瞬で高温になって火花が散るので怖いですからね。

どうぞご安全に。

よろしければ、コンデンサーの結果と、自作レンズの記事をリクエストしたいです!

コメントをありがとうございました。

記事名:UWSCの画像認識.
返信日:2022年6月22日

こんばんは

ご返答ありがとうございます。

では勇気を振り絞って濡らした綿棒でやってみたいと思います。w

すでに使用済み写ルンですは某オークションで入手済みなので時間がある時にでも裏蓋を外してショート実験をやってみたいと思います。

結果もお知らせしますのでお楽しみに。

自作レンズもせっかくなのでできたら私のブログかユーチューブで期間限定公開で公開しますね。こちらもお楽しみに。

とりあえずは上手くいくことを祈りながらありがとうございました。さすがしゅうさんです。持つべきは経験のある友。w

ネットにはない情報をありがとうございました。(うまくいったら)←まだ少し疑っている。www

なお、自然放電、あるいは充填していなくて恐れずに足らずの結果になっても軽く笑って流してくださいね。w

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: こんばんは

ひまわりさま。

こんばんは。コメントをありがとうございます。

私の経験がお役に立てたようで、とてもうれしいです。そうでなければ、ただ痛かっただけの思い出ですからね(笑)

綿棒を使う方法は正攻法ではないので、あまり期待はしないでくださいね。(そもそも正攻法なんてないですが)

すでに放電状態で届いたのなら、それが一番ですよね。
逆に充電状態なら出品者のトラップなのかな。


記事、楽しみにしています!

コメントをありがとうございます。

記事名:UWSCの画像認識.
返信日:2022年6月22日.

Re: 追記

ひ****さま。(非公開コメントのため。念のため)

こんばんは。コメントをありがとうございます。

(非公開コメントのため、簡単な返信にします)

さっそく、観てみました!

私、ロボットアニメってあまり見たことがないのですが、ハラハラする作品だと思いました。
どことなく、キャラクターやストーリーがガンダムっぽいのかなと。(ガンダムも見たことないですが……)

昔の作品にある、ロボットとかコンピューターとかにかける思いがいいですね。それに引き替え、現実はあまりにつまらないです。

オススメアニメがあればまたお願いします。

またのコメントもお待ちしています。

記事名:UWSCの画像認識.
返信日:2022年6月22日.

コメントの投稿

非公開コメント

プロフィール

しゅう

Author:しゅう
1991年北海道三笠市生まれ。プロフィール

全記事表示リンク