Login  Register

Re: FIJI 2D stitching in a macro - solution!

Posted by lechristophe on Nov 22, 2010; 9:01am
URL: http://imagej.273.s1.nabble.com/FIJI-2D-stitching-in-a-macro-solution-tp3686366p3686367.html

Hi Jacqui,

I'm glad the macro is helpful. If someone on the list wants to re-use it, or
for Stephan to include it, I've uploaded a fully commented version here :

http://www.cleterrier.net/macros/Stitch_BMT.ijm

Best Regards,

Christophe

On Mon, Nov 22, 2010 at 05:52, Jacqui Ross <[hidden email]>wrote:

> Hi Everyone,
>
>
> Christophe Leterrier has very kindly written a macro for me, which
> solved my problem. This macro tiles the 3 images together perfectly
> (even though they are a zigzag) and saves each tiled image as a separate
> TIFF file. I was then able to open the sequence of tiled images as a
> virtual stack and save out as AVI.
>
>
>
> I have forwarded (below) the email that Christophe sent me as
> explanation of the macro. I have also included  one where I have
> described the data that I sent him, so that you will know how the
> folders work. It has taught me some useful information about how to
> write these kinds of macros.
>
>
>
> The macro is called Stitch BMT. I have copied it below. I hope the
> formatting is preserved since it wasn't last time. The macro file itself
> was rejected by the listserver.
>
>
>
>
>
> macro "Stitch BMT" {
>
>
>
>                PARENT_PATH=getDirectory("Select a directory");
>
>
>
>                File.makeDirectory(PARENT_PATH+"tiled");
>
>                POSITION=newArray("bottom", "middle", "top");
>
>
> ALL_NAMES=getFileList(PARENT_PATH+POSITION[0]+File.separator);
>
>
>
>                for (i=1; i<=ALL_NAMES.length; i++) {
>
>
>
>
> BOTTOM_IMAGE=POSITION[0]+pad(i,3,0)+".tif";
>
>
> MIDDLE_IMAGE=POSITION[1]+pad(i,3,0)+".tif";
>
>                                TOP_IMAGE=POSITION[2]+pad(i,3,0)+".tif";
>
>                                FUSED_IMAGE="fused"+pad(i,3,0)+".tif";
>
>
>
>
> BOTTOM_PATH=PARENT_PATH+POSITION[0]+File.separator+BOTTOM_IMAGE;
>
>
> MIDDLE_PATH=PARENT_PATH+POSITION[1]+File.separator+MIDDLE_IMAGE;
>
>
> TOP_PATH=PARENT_PATH+POSITION[2]+File.separator+TOP_IMAGE;
>
>
> FUSED_PATH=PARENT_PATH+File.separator+"tiled"+File.separator+FUSED_IMAGE
> ;
>
>
>
>                                print("\n");
>
>                                print("bottom: "+BOTTOM_IMAGE);
>
>                                print("middle: "+MIDDLE_IMAGE);
>
>                                print("top: "+TOP_IMAGE);
>
>                                print("fused: "+FUSED_IMAGE);
>
>
>
>                                open(BOTTOM_PATH);
>
>                                open(MIDDLE_PATH);
>
>                                open(TOP_PATH);
>
>
>
>                                run("2D Stitching", "first_image="+
> BOTTOM_IMAGE +" use_channel_for_first=[Red, Green and Blue]
> second_image="+ MIDDLE_IMAGE +" use_channel_for_second=[Red, Green and
> Blue] use_windowing how_many_peaks=5 create_merged_image
> fusion_method=[Linear Blending] fusion=1.50 fused_image=temp.tif
> compute_overlap x=0 y=0");
>
>                                run("2D Stitching",
> "first_image=temp.tif use_channel_for_first=[Red, Green and Blue]
> second_image="+ TOP_IMAGE +" use_channel_for_second=[Red, Green and
> Blue] use_windowing how_many_peaks=5 create_merged_image
> fusion_method=[Linear Blending] fusion=1.50 fused_image="+ FUSED_IMAGE
> +" compute_overlap x=0 y=0");
>
>
>
>                                selectWindow(BOTTOM_IMAGE);
>
>                                close();
>
>                                selectWindow(MIDDLE_IMAGE);
>
>                                close();
>
>                                selectWindow(TOP_IMAGE);
>
>                                close();
>
>                                selectWindow("temp.tif");
>
>                                close();
>
>                                selectWindow(FUSED_IMAGE);
>
>                                save(FUSED_PATH);
>
>                                close();
>
>
>
>                }
>
> }
>
>
>
> function pad(number, width, character) {
>
>       number = toString(number); // force string
>
>       character = toString(character);
>
>       for (len = lengthOf(number); len < width; len++)
>
>               number = character + number;
>
>       return number;
>
> }
>
>
>
> I hope it will also be of use to others.
>
>
>
> Thanks Christophe for your efforts!
>
>
>
> Kind regards,
>
>
>
> Jacqui
>
>
>
> Jacqueline Ross
>
> Biomedical Imaging Microscopist
> Biomedical Imaging Research Unit
> School of Medical Sciences
> Faculty of Medical & Health Sciences
> The University of Auckland
> Private Bag 92019
> Auckland, NEW ZEALAND
>
> Tel: 64 9 373 7599 Ext 87438
> Fax: 64 9 373 7484
>
> http://www.fmhs.auckland.ac.nz/sms/biru/
>
> From: Christophe Leterrier [mailto:[hidden email]]
> Sent: Wednesday, 17 November 2010 10:27 p.m.
> To: Jacqui Ross
> Subject: Re: FIJI 2D stitching in a macro
>
>
>
> Hi Jaqui,
>
>
>
> The attached macro (Stitch_BTM.ijm) should run fine with the latest
> Stitching plugin from Fiji (the one with the updated fields).
>
> It runs OK on my setup for the attached folder (the same you sent me but
> I removed the "Tiled" folder). Just run the macro, choose the
> "Christophe" folder in the dialog (you have to choose the parent folder
> that contains the "bottom", "middle" and "top" folders), it will create
> an additional "tiled" folder where it will store the resulting images
> with "fused00X.tif" names.
>
>
>
> One caution : the folders inside the parent folder must be named exaclty
> "bottom", "middle" and "top", these folders must only contain images
> that are used for stitiching and no other files or images, and the
> images must be named "bottom00X.tif", "middle00X.tif", "top00X.tif"
> (with three digits).
>
>
>
> Hope this helps,
>
>
>
> Christophe
>
>
>
> On Wed, Nov 17, 2010 at 06:31, Jacqui Ross <[hidden email]>
> wrote:
>
> Hi Christophe,
>
>
> Thanks very much for your kind offer to assist me.
>
>
>
> As you suggested,  I have attached a .zip file containing 4 folders,  3
> of which contain the raw data to be tiled. The other folder (Tiled)
> contains one merged image, which will give you an idea of the overlap,
> which is around 30%. As you will see, it's not ideal because it doesn't
> comprise a square/rectangle, which would be better.
>
> However, the 2D Stitch plugin seemed to do this tiling effortlessly with
> a nice result as you will see.
>
>
>
> I will look forward to hearing how you get on with this. It's not super
> urgent so whenever you have time to take a look will be fine.
>
>
>
> Thanks!
>
>
> Kind regards,
>
>
>
> Jacqui
>
> Jacqueline Ross
>
> Biomedical Imaging Microscopist
> Biomedical Imaging Research Unit
> School of Medical Sciences
> Faculty of Medical & Health Sciences
> The University of Auckland
> Private Bag 92019
> Auckland, NEW ZEALAND
>
> Tel: 64 9 373 7599 Ext 87438
> Fax: 64 9 373 7484
>
> http://www.fmhs.auckland.ac.nz/sms/biru/
>