1.github上发布的manual里面没有提到这一点,但是STEP_0_Parameters.m中的image parameters应根据实际需要识别的图像进行修正
%% 4. Image Parameters
xy_pix=0.65; % Pixel size = um/pixel
xy_pix是图像的size/pixels,比如将图像用imageJ(Fiji)打开后显示在左上角的microns/pixel=7770.51/11955=0.65
如果没有设定正确的xy_pix, STEP_4_Angle_Finder.m中的
rough_initial_search(current_pos_idx) =...
try_matching0805(I_adj, img_ref, downscaled_xy_pix,BlockSz_Stg1);
查找anchor_images对应的AP这一部将会因为不能将I_adj与img_ref匹配上而使得rough_initial_search=NaN,后面的运行可能会出错。如果使用了正确的xy_pix但仍然报错,检查STEP1-3的结果是否是根据正确的xy_pix运行的,以及anc_img的质量。如果anc_img不够好,则换一张anc。
2. STEP5_Transform_and_ROI_drawing 中的parfor并行计算经常出错,但是STEP4to5则没有问题,可能是因为github上发布的版本当中在parfor中违规操作定义了新的field导致计算出现问题。将parfor改成for可以避免这个问题但是会大大延长运行时间。
3.manual当中写到的将elastix添加到系统路径,该操作可以通过在命令行中直接输入elastix来验证是否成功。
这样是可以的,但是MATLAB中运行elastix仍然不成功,我把网上下载的elastix文件都拷贝到了当前目录下就可以运行了。其他PC也许可以直接运行。
4. AMsSiNe识别的图像是8-bit格式,所以需要先用imageJ或者其他软件将.vsi格式的文件split channel并转成8-bit。
STEP4以及STEP4to5中的
img_act=img_act.*(img_act_pad);% STEP4
img_Color=img_Color.*(img_Color_pad); %STEP4to5
img_xxx_pad是产生的8bit的变量,如果前面的不是8bit就会报错。可以通过加一行这个来16转8。不要uint8去强制类型转换,这样会使255以上的值全部变成255,图像就变了。可能会出现整个脑子都是白色的图像。
if strcmp(class(img_Color),'uint8')
else
img_Color=uint8(double(img_Color)/65535*255);
end
但最好还是开始运行前检查一下是不是都是8bit,或者在STEP1里面就把格式改好,如果后来发现不是,STEP4,4.5,5都要改非常麻烦。
5. Images文件夹下不要放多余的文件/文件夹,读取文件时会出错。
6. STEP4 的原理是先定义两张anchor image,然后在Stage1通过内置的try_matching_0805在由reference nrrd文件生成的52张图里面分别找到最匹配的AP(anterior-posterior),然后再逐步按8-4-2调整角度再计算一便,最后得到一个两张anchor images对应的AP以及倾斜角度。最后(在下一步里面)将中间的那些图片等距插值到两个AP中间。所以anchor images的选择就尤为重要,建议在STEP2仔细斟酌一下用哪一张,而且在STEP4正式运行之前试运行前5张和后5张图的stage1,避免匹配不上或者匹配到了错误的值。需要注意的一点是,这个文件有一个bug就是51/52这两张reference在后面改变倾斜角度=8的时候,current_AP这个值会大于264,使得后面数组索引溢出而报错,所以最好检查一下舍弃太靠后的图片。可以打印变量rough_intial_search, 或者通过AP_rough_best计算img_ref,然后figure;imshowpair(I_adj,img_ref,"montage");来检查。