SSIM実習 JPEG2000実習 特定レイヤーのSSIM測定バッチ編

本日は、上級者向けの応用編です。こちらの3つの内容は押えておいてくださいね。


JPEG2000実習 レイヤー編 http://d.hatena.ne.jp/denshikA/20100604
JPEG2000実習 各レイヤーのPSNR確認編 http://d.hatena.ne.jp/denshikA/20100614
SSIM実習 (フォルダ内一括計算) http://d.hatena.ne.jp/denshikA/20100705


すでに、SSIMの計算ツール(C++版)を、ソース付きで公開し、前回は、フォルダ単位で、一気にドビャーっと計算するSSIMの計算バッチを作ってみました。


あとは、ズバリ、JP2ファイルの特定レイヤーのSSIM測定にトライしてみるしかありませんね*1


前回のSSIM計算拠点を使いましょう。

という感じですね。(意味が分からなければ、http://d.hatena.ne.jp/denshikA/20100705を見てください。)


とりあえず、「TIFF87フォルダ、SSIMtool.exe、result.txt」の3つはいりませんので、削除しちゃってください。


次に、3レイヤーで作成したJPEG2000のファイルを用意しておきましたので、こちら(JP2.zip 直)からダウンロードして、展開して、拠点(SSIMフォルダ)においてください。中には、特製JP2ファイルが13個入っています。


そして、今回は、「JP2ファイルの特定レイヤーのSSIM測定」ということですので、2ステップの作業となります。

  1. まず、JP2ファイルをレイヤーごとの画像に分解します
  2. 各レイヤー画像のSSIMを測定します


そんな2つのことをやってくれるバッチプログラムは、こんな感じですかね?

@echo off
echo --------------------------------------------------------
echo JP2をレイヤー分解してから、SSIM検査しますよー Ver2.0
echo --------------------------------------------------------

PAUSE


REM  --------------------------------------------------------

REM 元の画像が入ったフォルダさん (TIFF画像)
set ORIGINAL=TIFF

REM 分解前のJP2が入ったフォルダさん (JP2画像)
set JPEG2000=JP2

REM 比較する画像が入ったフォルダさん (TIFF画像)
set DISTORTED1=LAYER1
set DISTORTED2=LAYER2
set DISTORTED3=LAYER3

REM MAP画像を入れるフォルダさん (PNG画像)
set SSIMMAP=MAP

REM  --------------------------------------------------------



echo ----- こんにちは、これからフォルダ作るよ -----

mkdir %DISTORTED1%,%DISTORTED2%,%DISTORTED3%

echo ----- ほらね、フォルダ作ったよ -----

PAUSE


echo ----- 次は、JP2のレイヤー分解開始だよ -----

FOR %%B IN (%JPEG2000%/*.jp2) DO (
	for /f "tokens=1 delims=." %%i in ("%%B") do (
		echo %%Bのレイヤー1を分解中
		C:\j2k_to_image.exe -i %JPEG2000%/%%B -o %DISTORTED1%/%%i.tif -l 1
		echo %%Bのレイヤー2を分解中
		C:\j2k_to_image.exe -i %JPEG2000%/%%B -o %DISTORTED2%/%%i.tif -l 2
		echo %%Bのレイヤー3を分解中
		C:\j2k_to_image.exe -i %JPEG2000%/%%B -o %DISTORTED3%/%%i.tif -l 3
	)
)

echo ----- どうにか、JP2レイヤー分解できたよ -----

PAUSE

echo ----- 最後に、SSIM検査開始だよ、もう一息! -----

FOR %%B IN (%ORIGINAL%/*.tif) DO (
	for /f "tokens=1 delims=." %%i in ("%%B") do (
		echo %%i: >> result1.txt
		SSIM.exe %ORIGINAL%/%%B %DISTORTED1%/%%i.tif %SSIMMAP%/%%i-1.png >> result1.txt
		echo %%i: >> result2.txt
		SSIM.exe %ORIGINAL%/%%B %DISTORTED2%/%%i.tif %SSIMMAP%/%%i-2.png >> result2.txt
		echo %%i: >> result3.txt
		SSIM.exe %ORIGINAL%/%%B %DISTORTED3%/%%i.tif %SSIMMAP%/%%i-3.png >> result3.txt
		echo %%i: done...
	)
)

echo ----- SSIM検査完了だよ ばいばーい!-----

PAUSE


このプログラムをテキストファイルにコピペして、「SSIMtool2.bat」などと名づけて、先ほどのSSIMフォルダに入れてください。


さて、この「SSIMtool2.bat」を実行させるとどうなるのか?ぜひ、試してみてください。


追伸:noidonさん、tomomi_assistさん、その後、どんな調子ですか?

On 04/03/2010, at 5:58 PM, tomomi_assist wrote:


I would like to create jp2 files by specifying an uniform SSIM value to image files.


If you know the solution to deal with, please teach me the method.


http://tech.groups.yahoo.com/group/kakadu_jpeg2000/message/6052

*1:かなりマニアな領域になりますが