用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帐户或创建一个新的。