開発小史1-1

ここでは、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に続きます。