swimingduck
第12楼2008/10/22
image shift的问题很讨厌的,有的时候程序是纠正不过来的,必要的时候用眼睛,虽然比较难……,另外一个办法就是先重构一些对中非常有把握的图像,然后再一张一张的模拟,然后再加进去重构。
如果是已知结构,或者大概已知的结构,如果开始重构总是结果不好,并且怀疑是defocus不准,用模拟的方法先找大致的defocus.
还有一个决定重构波函数挺重要的操作就是要纠正absolute defocus。这个用correct asti的那个菜单点出来的。因为absolute defocus的值通常都是不准的,大概2nm的差距就会让你的结果看得挺不一样了。
如果有具体的问题可以发邮件问我,我会尽量给解决的,不用客气的。
swimingduck
第14楼2008/10/22
汗,我不怎么爬上来的,因为昨天发了软件,今天就比较关心的来看看。哈哈
PC-PCF方法计算的话,如果非晶包含的足够,精确度能高。按我自己做的经验,尽可能的还是拍摄离焦条件近的图像吧,大约间距2nm左右,不要太大,这样用MCF和XCF方法都可以做的。小离焦间距下,其实我并没有觉得PCF或者PC-PCF有太大的优势的,个人见解啊,也许我说的不对。
现在的软件里面,PC-PCF方法的那个对话框,我加进了个光栏选择,就是在算相关的时候只选择小的光栏截住较低频的信息来做,这样精度能高些。(不过,哈哈,我自己最近已经不怎么用PC-PCF方法的那个菜单,最近在帮同学处理一套像的时候。我一般让同学就拍2nm间距的图像系列,然后再用现在新加的一个ali series一批的处理了,其中没有PC-PCF方法……)
你问的离焦范围搜索的问题,我自己做起来其实经验不多的。我拿的是同学CS校准器下的图像,而且基本是小离焦间距了,所以值的话,我想差的不会太大吧……另外,我是能先模拟就先模拟,再大致定值的范围,如果偏差一点的话,比如说零点几纳米的话,重构出来的像很难说到底哪个好。要不我才不会辛辛苦苦的在软件里又写了模拟的程序,嘿嘿
起始离焦量的确定,如果按照汤栋96年的文章来看的话,是以振幅像的STD最小、相位像统计标准方差最大来判别的。一般我都是前后拉-6到6nm左右,按图像的可能情况来定,如果拉的absolute focus再大的话我就比较怀疑这个结果了,或者就想办法的对对非晶啦……,其实最好的方法还是先自己模拟一下!
swimingduck
第16楼2008/10/22
成功率高应该差不多吧,你们后来有用MacTempas再构一次吗?我想改成那天我们算的时候条件,应该也能成功的。
我从来没有做过非晶的模拟……比较weak,
如果是要以模拟像对实验像的话,考虑到非常精确的情况,也许需要?
如果是以重构为目的的话,稍微看下晶体结构细节对得上否就可以了。
加在上和加在下应该是一样的吧,我想,因为都是投影来的,只是计算的时候非晶层多进行了点Fresnel。专门放在模拟里面我没用过。
给你这个脚本吧,是DM里面模拟非晶的。你可以看看参考下,哈,是随机数做的。
/*----------------------------------------------------------------------------------------
Hit ctrl-enter to execute.
Description:
This script creates an image resembling a TEM image of an amorphous specimen
by filtering a random image with a band pass filter.
Copyright ?2001 Gatan Inc.
------------------------------------------------------------------------------*/
// Set the height and width of the destinantion image
number width = 512, height = 512
// Create an image of the same size and fill with random signal
image randomImage := RealImage("image", 4, width, height)
randomImage = Random()
// Create another image of the same size to contain the square of the Fourier frequency
image freqSquared := RealImage("Frequency Squared", 4, width, height)
// Set the values of the image to the square of the distance from the image centre (in pixels)
// i.e. the Fourier frequency
freqSquared = (icol-(width/2))*(icol-(width/2)) + (irow-(height/2))*(irow-(height/2))
// Create a complex image of the same size to be a filter
complexImage filter := ComplexImage("Filter", 8, width, height)
// This conditional argument sets the real part of all pixels in the filter image to unity
// iff the value of the corresponding pixel in the frequency squared image falls within
// the specified values. Else the pixel is set to zero.
filter = (freqSquared > 100 && freqSquared < 1000) ? complex(1, 0) : complex(0, 0)
// FFT the randomimage, filter using the filter image, and take the inverse
//transform to yield an 'amorphous' image
image filteredImage := RealIFFT( RealFFT( randomImage ) * filter )
// Finally, set the image name... and display it.
FilteredImage.Setname("Simulated Amorphous Image")
ShowImage( filteredImage )