ここでは、IMCのバージョン1開発について書きつずって行きます。
~2019年4月
第二部 IMCバージョン1の開発についてです。
さぁ、類似画像比較法であるAverage HASHを知ってしまいました。後はプログラムを作るだけ。。。
ちょっと待った!!
Average HASH法ではビット演算する必要が有るけど、現在のプログラム開発言語では、扱える最小の単位がバイト(Byte)だよね。じゃあどうやったらビット(Bit)を扱えるの????
001100100010100111001000111100010100……100110 128個並んだ1と0から1の数を数える????
悩みました。本当に悩みました。
出した結論は、128ビットで扱うのでは無く、1バイト×16個として扱う事にしたのです。
00000001[bit並び] → 001[10進数]
10101001[bit並び] → 252[10進数] となりますね。
これを事前に配列(256要素)に入れておきます。
配列 BitCount(0) 中身は、10進数で0の時のビットが立っている(ON Bit)数を入れてお<-0個
配列 BitCount(127) 中身は、10進数で127の時のビットが立っている(ON Bit)数を入れてお<-7個
配列 BitCount(128) 中身は、10進数で128の時のビットが立っている数(ON Bit)を入れてお<-1個
これで、2進数8桁=1バイトで得た答えから1の立っているビット数が得られます。これで、この問題は解決。
1ヶ月以上掛かりましたけど。
次に解決すべきは、データベースの問題
前回、画像を保存していないので、毎回画像の再スキャンを行っているフリーソフトの事を書きましたが、IMCで同じことをする訳には行きません。データ保管にはデータベースが必須になるわけですが。。。
会社では、Ora〇〇社のデータベースを使っていましたので、Ora〇〇データベースに対しての知識はありましたが趣味で、あの料金はとても払えません。ここは無料のDBMSかな?
mysql? Postgresql? MS-SQL Express? Jet-Engine経由のMDB?
選択肢はたくさんありました。出した結論は、類似画像の整理をしたいだけで、データベースを主目的に使いたいわけでは無い。よって最も手軽なJet-Engine経由のMDBにしました。
このことが、最悪の結果をもたらす事になるとは知らずに。。。
Jet-Engine経由のMDBについて、少し書いておきます。
Jet-EngineとはWindows OSに最初から搭載されているデータベースの実行エンジンで、MS-Accessで作ったデータベースファイル(*.MDB)をMS-Accessを使うことなく操作できるエンジンです。でも最初のデータベースファイルはMS-Accessで作る必要があります。買いましたよMS-Access!! このためだけに。4万数千円。高い!!
という事で、バージョン1開発その2に続きます。