用MATLAB进行图像处理

图像处理概念、算法和MATLAB

imshowpair和imfuse是如何工作的

在这篇文章中,我将探索如何做到这一点 imshowpair imfuse 工作。
原因:我很好奇。
上个月,我写了一篇关于登记几张手持照片的文章。在那个帖子里,我用了 imshowpair 好几次了。
这里有两张图片:
一个= imread (“A.jpg”);
imshow (“A.jpg”
B = imread (“B.jpg”);
imshow (B)
这里是 imshowpair 在使用:
imshowpair (A, B)
我想知道这个函数是如何工作的。今天,我想和大家分享一下我的发现以及我是如何发现的。
许多函数在图像处理工具箱船舶作为MATLAB的源代码。在这种情况下,我总是通过使用调试器来跟踪代码的执行,一步一步地来开始我的代码探索。下面是我的代码潜水的开始:
imshowpair截图- 1. png
我注意到的第一件事是,解析后的输入参数都会立即传递给 imfuse .几行之后,结果是 imfuse 显示使用 imshow
啊哈!这个函数 imfuse 这就是计算的方法。因此,我继续在调试器中执行 imfuse
imfuse截图- 1. png
看起来很有趣的第一步是 calculateOverlayImages .(注意:变量 类风湿性关节炎 RB 空间参考 定义每个图像在空间中的位置。因为我没有提供这个信息作为输入参数,所以它们只是设置了默认的空间引用,其中水平和垂直坐标与像素下标相同。)这是内部的一个局部函数 imfuse.m .通过查看它的代码,我可以看到它是这样做的:
  1. 在空间中找到一个足以覆盖图像A和图像B位置的输出网格。
  2. 将输出网格中的每个像素大小(宽度和高度)设置为A和B中相应像素大小中最小的。
  3. 将每个图像重新采样到输出网格中。
  4. 计算两个掩模图像,对应于输出网格中图像A和B的位置。
继续跟踪代码执行,我发现下一个有趣的点是对局部函数的调用 local_createRGB .函数如下:
imfuse截图- 3. png
这两幅图像都被转换为灰度(如果必要的话),然后每幅图像都被缩放。我也看到了独立缩放方法,它只是缩放每个图像,以占据全黑到白的动态范围。然后,将图像转换为 uint8 使用适当的特定于类型的扩展的数据类型 im2uint8
最后,将灰度图像A和B直接插入到输出图像的红色、绿色和蓝色通道中。默认情况下,图像A插入绿色通道,图像B插入红色和蓝色通道。
这个函数 imshowpair 当您只想显示融合的结果,但不需要保存或进一步计算的结果时,是方便的。如果你需要融合结果,就打电话 imfuse 直接。
的函数 imshowpair imfuse 金宝app支持其他融合方法。我将把结果留给你们 “棋盘” 方法。
imshowpair (A, B,“棋盘”
|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。