MATLAB imfuse函数与ImageJ合成图像的叠加效果差异问题
图像漂移可视化MATLAB与ImageJ结果矛盾排查
我有两张膜表面的延时图像,二者本该显示同一区域,但调焦过程中拍摄视场可能出现了小幅漂移。我采用两种途径可视化漂移量,分别是MATLAB 2021a和ImageJ,具体操作如下:
1. MATLAB操作
首先使用imshowpair叠加两张图像,原始灰度图为fix和mov,imshowpair(mov,fix)输出结果为imshowpair_comp,可明确观察到疑似漂移。
随后使用imfuse函数进行操作,代码如下:
RF = imref2d(size(fix)); RM = imref2d(size(mov)); RM.XWorldLimits = RF.XWorldLimits; RM.YWorldLimits = RF.YWorldLimits; comp = imfuse(fix,RF,mov,RM,'falsecolor','Scaling','joint','ColorChannels',[1 2 0]);
输出合成图像为imfuse_comp。
后续我执行了图像配准,得到imregcorr_comp,对应代码如下:
tForm = imregcorr(mov,fix,"similarity"); movTransform = imwarp(mov,tForm,"OutputView",RF); imshowpair(movTransform,fix)
该图像为对齐正常的合成图像。
2. ImageJ操作
我按以下步骤执行:
- 在ImageJ中打开fix.tiff,依次点击Image->Colors->Channels Tool->Composite->Red。
- 在ImageJ中打开mov.tiff,依次点击Image->Colors->Channels Tool->Composite->Green。
- 依次点击Image->Colors->Merge Channels。
得到合成图像imagej_comp,该结果显示两张原始图像本身不存在错位。
两种方法得到的结果存在明显矛盾,我无法排查出问题所在,也不确定应当采信哪条路径的结果,恳请各位帮忙分析解答。
问题排查方案与结论
核心矛盾成因
两种方法的结果矛盾大概率由图像坐标系默认规则差异导致,MATLAB默认的图像坐标系原点在左上角,Y轴向下递增,而ImageJ默认操作下如果没有手动调整图像翻转/坐标系,两个工具对同一张图像的Y轴映射规则不一致,会直接导致叠加时出现虚假漂移。
排查步骤
- 先验证原始图像尺寸一致性:分别在MATLAB用
size(fix)、size(mov),ImageJ中打开两张图按i快捷键查看图像信息,确认二者宽高完全一致,排除尺寸缩放导致的偏移。 - 手动验证漂移:在两张原始图中各选3个以上辨识度高的特征点,分别记录其在MATLAB和ImageJ中的坐标,核对坐标对应关系:
- 若MATLAB中特征点坐标偏移方向沿Y轴对称,直接在MATLAB中执行
mov = flipud(mov);后重新运行imshowpair,若漂移消失即可确认是坐标系差异导致的假阳性结果。 - 若坐标偏移在两个工具中一致,检查ImageJ合并通道时是否默认执行了自动对齐:高版本ImageJ的Merge Channels功能在检测到图像有明显特征时,会默认触发隐式配准,可关闭自动对齐选项后重新合并,验证结果是否和MATLAB原始叠加结果一致。
- 若MATLAB中特征点坐标偏移方向沿Y轴对称,直接在MATLAB中执行
- 结果采信优先级:优先采信无隐式配准的原始叠加结果,ImageJ合并通道时需手动勾选Disable Auto Alignment选项后得到的结果,才是无额外处理的原始漂移可视化结果。
内容的提问来源于stack exchange,提问作者theComplex_iota
相关产品推荐
相关产品推荐

