2015年11月17日火曜日

2つの画像を比較してみる【改】

前回、imconvert.exeを使って画像の差を数値化してみましたが、どうも、mayaのバージョンによってimconvert.exeの方にも差があるらしく希望の値を取得できないことが発覚。

しかもTruecolorだと、meanの値が使っている色によって偏ってしまうことも判明。

という事で、-compose differenceした画像をグレースケールに変換してから-identify -verboseを取得するようにしたらどうかと思い修正。

imcnvCmpr2.bat
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
32
33
34
35
36
37
38
39
40
41
42
43
@echo off
title %~n0
 
set WORK_AREA=%~dp0
set MAYA_BIN=C:\Program Files\Autodesk\MayaLT2016\bin\
 
 
:: 比較する画像
set IMG_A=%1
set IMG_B=%2
:: 存在確認
if ""=="%IMG_A%" echo IMG_A is blank. & pause & exit /b
if ""=="%IMG_B%" echo IMG_B is blank. & pause & exit /b
if not exist "%IMG_A%" echo %IMG_A% not found. & pause & exit /b
if not exist "%IMG_B%" echo %IMG_B% not found. & pause & exit /b
 
 
:: imconvertの作業エリア作成
set IMCNV_TMP=%WORK_AREA%_tmp
if not exist "%IMCNV_TMP%" md "%IMCNV_TMP%"
 
:: 差分画像のファイル名
set OUT_IMG=%IMCNV_TMP%\out.png
:: ログファイル名
set VRBS_FILE=%IMCNV_TMP%\verbose
set MEAN_FILE=%IMCNV_TMP%\mean
 
 
:: imconvert実行
"%MAYA_BIN%imconvert.exe" -composite -compose difference "%IMG_A%" "%IMG_B%" "%OUT_IMG%"
"%MAYA_BIN%imconvert.exe" -depth 8 -type Grayscale "%OUT_IMG%" "%OUT_IMG%"
"%MAYA_BIN%imconvert.exe" -identify -verbose "%OUT_IMG%" "%OUT_IMG%">%VRBS_FILE%
 
 
:: 結果解析
find "mean:" %VRBS_FILE% | find "mean:">%MEAN_FILE%
set RESULT_MEAN=
for /F "tokens=1-3" %%A in (%MEAN_FILE%) do set RESULT_MEAN=%%B
 
 
:: 結果表示
echo %RESULT_MEAN%
pause



前のよりもソレっぽい値が出てきた!

0 件のコメント:

コメントを投稿