2015年11月17日火曜日

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

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

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

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

@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 件のコメント:

コメントを投稿