画像の一致
猫の毛 2013/6/11(Tue) 13:15:05|NO.54822
picloadで読み込んだ画像とデスクトップにある表示されている画像が一致すれば
メッセージを出すような物を作りたいのですが画像を一致させる方法がわかりません。
よろしければご教授お願いします。
GrapeColor(DION) 2013/6/11(Tue) 16:03:07|NO.54823
MD5使えばいいのでは?
FunnyMaker 2013/6/11(Tue) 17:56:17|NO.54825
「画像を一致させる」のなら、単にコピーして複製物を描画すればいいような気がしますが...。
「画像が一致しているかどうか確かめる」ということではないでしょうか?
もしそれなら、2枚の画像で対応する座標の色が全部等しいことを確認すればよいと思います。
GrapeColor(DION) 2013/6/11(Tue) 18:15:08|NO.54826
暇だったのでサンプルを作ってみました。
#include "hspext.as"
#include "hspinet.as"
sdim Target, 256
sdim Wallpaper, 256
sdim Target_hash, 32
sdim Wallpaper_hash, 32
dialog "", 16, "背景画ファイル"
if stat {
Target = refstr
regkey , "Control Panel\\Desktop"
getreg Wallpaper, "Wallpaper", 1, 256
filemd5 Target_hash, Target
filemd5 Wallpaper_hash, Wallpaper
if Target_hash = Wallpaper_hash {
mes "壁紙の画像と選択された画像が一致しました。"
} else {
mes "壁紙の画像と選択された画像が一致しませんでした。"
}
}
stop
1ドットずつ色を比較してたら時間かかりますよ。
KA 2013/6/11(Tue) 21:14:16|NO.54831
JPGなどの非可逆圧縮と、PNG(可逆圧縮)やBMP(べた)など
の画像比較は、曖昧さを考慮する必要が有り、思ったより複雑です。
極端に言えば、似たような画像の一致度から判断することに成ります。
test 2013/6/11(Tue) 21:18:10|NO.54832
猫の毛さんの質問文では何がしたいのかよくわからないので、回答者がみんな異なる解釈をしてわけのわからない状況になっています。
もっと詳しく具体的に何がしたいのかを書けば、目当ての回答が得られるかもしれません。
猫の毛 2013/6/11(Tue) 22:02:57|NO.54833
みなさん回答ありがとうございます!
>testさん
すみません質問の仕方が不適切でした。
例えばUWSCのCHKIMG関数を使って画像一致してるか比較する
ような感じの物を作りたかったのです。
>KAさん
似たような画像の一致とはどのようにすればいいのでしょうか?
ぴょぴょ 2013/6/12(Wed) 00:49:44|NO.54834
> 似たような画像の一致とはどのようにすればいいのでしょうか?
KAさんではありませんが、一言。
似たような画像を一致させるには、4×4ドットの画像の平均を取ります。
ちょうどモザイクのような感じでね。
この平均化された値で±10とか、±50以内ならば同じ画像と判断するのが簡単。
他にも赤、青、緑の色の成分を取り出して比較すれば精度が上がると思います。
なお、この近似的画像比較は、C言語で作成しても処理に時間が掛かります。
よって、HSPで作成できたとしても実用にはなりません。
何かの画像処理プラグインを使うなら話は別ですが…。
私は便利なプラグインを知りませんね。
YSR 2013/6/12(Wed) 01:59:14|NO.54835
HSPCVで差分画像作ってそこからPSNRを計算すれば、FullHDでも1枚4秒ほどで計算できる
いや、縮小画像作って比較するほうが断然速いんですけどね
KA 2013/6/12(Wed) 06:55:17|NO.54836
人間の「視覚的に判別できない情報を削除」したのがJPGな
ので、表示されるデータは「似ている」だけに成ります。
また、色数が16ビットと24ビットでも見分けが困難です。
8ビットと24ビットでも、画像によっては分かりません。
それと画像の比率が同じでも、640×480と1280×9
60等でサイズが異なれば、見た目は同じでもデータは異なり
ます。
つまり見た目が同じでも、劣化していて色数も低くサイズが小
さい場合も有り得ます。なので、完全に画像が一致するのは同
じデータ(ファイル)と言う事です、それならバイナリで比較
すれば済みます。
上記をふまえ、「画像の一致」と言う意味を明確にしましょう。
ken 2013/6/12(Wed) 10:00:21|NO.54837
似ている画像で良いならcvmatchを応用すれば良いと思います。
猫の毛 2013/6/13(Thu) 15:00:20|NO.54860
みなさんのおかげでそれなりのものを作ることができました。
ありがとうございました。