I have a series of electron microscopy images which have
(approximately) a constant drift. Is there plugin or other something else than can apply displacements on this series of images in which I for instance put in the total shift + number of images or the shift between two images? henny -- -------------------------------- Henny Zandbergen, tel 31-15-2782266, fax 31-15-2786600 |
You might put the set of images into a stack, and then run the TurboReg
plugin to alilgn the images. Joel On Sat, Jul 3, 2010 at 9:16 AM, Henny Zandbergen < [hidden email]> wrote: > I have a series of electron microscopy images which have (approximately) a > constant drift. > > Is there plugin or other something else than can apply displacements on > this series of images in which I for instance put in the total shift + > number of images or the shift between two images? > > henny > -- > -------------------------------- > Henny Zandbergen, tel 31-15-2782266, fax 31-15-2786600 > -- Joel B. Sheffield, Ph.D Department of Biology Temple University Philadelphia, PA 19122 Voice: 215 204 8839 e-mail: [hidden email] URL: http://astro.temple.edu/~jbs |
Hi Henny,
below is a macro for doing it manually. Start it, then click on the same feature in the first and last slice; if you wish, also in other slices. It will interpolate for those slices where you did not mark the feature (the interpolated position is not shown while the macro is running - that might be useful to add in a later version). Press the space bar when done with marking, ESC to abort. The macro enlarges the image to make it include all frames. It adds some extra space if the 'extraspace' variable is set to a value larger than 0. Michael ________________________________________________________________ macro 'Manual Stack Register' { extraspace = 5; //padding the image at all sides by this value (pixels) requires("1.42j"); n=nSlices(); if (n<2) exit ("stack required"); xs=newArray(nSlices); ys=newArray(nSlices); for (i=0; i<n; i++) xs[i] = -1; //initialize positions as unset nClicked = 0; i=getSliceNumber()-1; flags=0; lasti = -1; posS = ""; while (!isKeyDown("space")) { getCursorLoc(x, y, z, flags); if (flags&leftClick !=0) { makePoint(x,y); xs[i] = x; ys[i] = y; nClicked++; lasti = i; do { wait(50); getCursorLoc(x, y, z, flags); } while (flags&leftClick !=0); } if (i != z) { //slice changed i = z; if (xs[i]>=0) { makePoint(xs[i],ys[i]); lasti = i; } while (isKeyDown("alt")) wait(50); } wait(20); if (lasti>=0) posS = "pos. from "+(lasti+1); showStatus("','=prev, '.'=next, space=done, esc=abort. "+posS); } if (nClicked<2) exit("Abort - at least two positions required"); lasti = -1; for (i=0; i<n; i++) { if (xs[i]>=0) { if (lasti<0) { lastx=xs[i]; lasty=ys[i]; } for (j=lasti+1; j<i; j++) { //interpolate xs[j] = lastx + (xs[i]-lastx)*(j-lasti)/(i-lasti); ys[j] = lasty + (ys[i]-lasty)*(j-lasti)/(i-lasti); } lastx=xs[i]; lasty=ys[i]; lasti=i; } } if (lasti<n-1) { for (j=lasti+1; j<n; j++) { xs[j] = lastx; ys[j] = lasty; } } Array.getStatistics(xs, xmin, xmax, mean, stdDev); Array.getStatistics(ys, ymin, ymax, mean, stdDev); newwidth = getWidth()+(xmax-xmin)+2*extraspace; newheight = getHeight() +(ymax-ymin)+2*extraspace; run("Canvas Size...", "width="+ newwidth +" height="+ newheight +" position=Top-Left zero"); for (i=0; i<n; i++) { setSlice(i+1); run("Translate...", "x="+(xmax-xs[i]+extraspace)+" y="+(ymax-ys [i]+extraspace)+" slice"); } showStatus("stack registered"); } ________________________________________________________________ On 3 Jul 2010, at 16:15, JOEL B. SHEFFIELD wrote: > You might put the set of images into a stack, and then run the > TurboReg > plugin to alilgn the images. > > Joel > > > On Sat, Jul 3, 2010 at 9:16 AM, Henny Zandbergen < > [hidden email]> wrote: > >> I have a series of electron microscopy images which have >> (approximately) a >> constant drift. >> >> Is there plugin or other something else than can apply >> displacements on >> this series of images in which I for instance put in the total >> shift + >> number of images or the shift between two images? >> >> henny >> -- >> -------------------------------- >> Henny Zandbergen, tel 31-15-2782266, fax 31-15-2786600 >> > > > > -- > > > Joel B. Sheffield, Ph.D > Department of Biology > Temple University > Philadelphia, PA 19122 > Voice: 215 204 8839 > e-mail: [hidden email] > URL: http://astro.temple.edu/~jbs |
In reply to this post by Henny Zandbergen
Hi Henny,
sorry, I took the macro from a larger set and forgot to copy some initial lines: var leftClick=16, rightClick=4; var shift=1, control=2, alt=8; Michael ________________________________________________________________ On 5 Jul 2010, at 13:24, Henny Zandbergen wrote: > Dear Micheal, > It seems like an ideal macro for me. > > When I tried to run your script, but ImageJ gave the message > > Undefined variable in line 19. if ( flags & <leftClick> ! = 0 ) { > > > I am using a Mac computer. > > > Do you have an idea how to solve this? > henny > -- > -------------------------------- > Henny Zandbergen |
Free forum by Nabble | Edit this page |