左右見開きの画像を結合させて、一つの大きな画像にするためのマクロです。
2022.12.02 追記
処理動作が速くなるように、マクロコードをまるっと改変しました。
マクロコード
//TwoImage_Combine_v2.txt
//Combine Two Images (Left and Right)
version = "2.1.3";
print("");
print("TwoImage Combine_v2");
print("ver",version);
//numImg = nImages;
//if(numImg != 0) exit("Error. Close All Images.");
//select L image
waitForUser("Open \"Left\" image, then click [OK].");
numImg = nImages;
if(numImg != 1) exit("Error. Close Other Images.");
nameL = getTitle();
wL = getWidth();
hL = getHeight();
dotIndex = indexOf(nameL, ".");
ext = substring(nameL,dotIndex);
print("Image(L)...",nameL);
selectWindow("Log");
//select R image
waitForUser("Open \"Right\" image, then click [OK].");
numImg = nImages;
if(numImg != 2) exit("Error. Close Other Images.");
nameR = getTitle();
wR = getWidth();
wR2 = wR;
hR = getHeight();
print("Image(R)...",nameR);
selectWindow("Log");
//Enter parameter
Dialog.create("Processing Setting");
items = newArray("white","black");
Dialog.addRadioButtonGroup("Back Ground", items, 1, 2, "white");
Dialog.addNumber("Gap (offset)",0);
Dialog.addNumber("Pixel Shift (Right Image, (+)...down, (-)...up)",0);
Dialog.show;
bg = Dialog.getRadioButton();
offset = Dialog.getNumber();
pxShift = Dialog.getNumber();
//backGround color
if(bg == "black") setBackgroundColor(0, 0, 0);
if(bg == "white") setBackgroundColor(255, 255, 255);
//offset
if(offset > 0){
selectWindow(nameR);
wR2 = wR+offset;
run("Canvas Size...", "width=wR2 height=hR position=Center-Right");
}
//pxShift
if(pxShift > 0) {
selectWindow(nameR);
hR2 = hR+pxShift;
run("Canvas Size...", "width=wR2 height=hR2 position=Bottom-Center");
}
if(pxShift < 0) {
selectWindow(nameL);
pxShift2 = abs(pxShift);
hL2 = hL+pxShift2;
run("Canvas Size...", "width=wL height=hL2 position=Bottom-Center");
}
//combine
run("Combine...", "stack1=nameL stack2=nameR");
newname = "Combined Image"+ext;
rename(newname);
print("Gap =",offset,", pxShift =",pxShift);
setBackgroundColor(255, 255, 255);
print("oshimai");
使い方
① マクロ起動後、ウィンドウの指示に従って「左側」にくる画像を開いて[OK]。
※この時点で「右側」の画像もすでに開いている場合、エラーになります。
② 次のウィンドウの指示に従って「右側」にくる画像を開いて[OK]。
③ 各種設定を入力する。
- Back Ground Color
- Gap (offset)...左右の画像の間隔は何pixelか? 裁断して切り落とした部分は、詰めない方が自然に仕上がります。Gap部分はBackGroundの色になります。
- Pixel Shift...左右画像の上下のズレを補正するため、画像を入力したpixel分移動させる。「+側」を入力すると、「右画像」が下にスライドする。「-側」を入力すると、「左画像」が下にスライドする、つまり感覚的には、右画像が上にスライドする。
⑤ [OK]をクリックすると、画像結合後の画像が表示されます。よければお好みの名前で保存してください。
マクロの起動方法
①ImageJ上部タブの[Plugins]→[New]→[Macro]で起動したエディタに、上のコードをコピペしてtxtファイル(TwoImage_Combine_v2.txt)を作成・保存する。
②保存したファイルをImageJフォルダ内の[plugins]フォルダにしまう。
このとき、[plugins]フォルダの中に新たに適当な名前のフォルダを作って、その中にしまってもOKです。ここでは仮に「自炊」というフォルダにtxtファイルを突っ込んだとします。
③一度ImageJを再起動すると、マクロがインストールされ、起動準備OK。
④上部タブ[Plugins]→[自炊]→[TwoImage Combine v2]でマクロが実行されます。
ライセンスなんかは一切無いので、ぜひぜひ自由に使ってみてください!