这个例子展示了如何使用新的ROI函数来创建一个交互式图像比较工具。在处理图像时,我们经常需要从视觉上评估函数对图像的影响。有些效果是可以清晰区分的,比如边缘过滤器。但有些影响更为微妙,需要进一步观察。
将示例图像读入工作区,然后创建图像的灰度版本。使用imshowpair
命令功能查看两张图片。的蒙太奇
选项显示图像并排。
我= imread (“peppers.png”);imgray = rgb2gray (im);图;imgray imshowpair (im,“蒙太奇”)
使用ROI,设置两个叠加图像的alpha层(透明度),使一个图像仅在ROI内显示。这个选择性视图遵循ROI,因此可以交互地移动它。创建一个新图形和一个坐标轴。
hFigure =图();hax =轴(“父”, hFigure);
在相同的轴上堆叠两个图像。
hImage1 = imshow (im,“父”, hax);drawnow;%确保图像被绘制。持有在;hImage2 = imshow (imgray,“父”, hax);持有从;
在坐标轴上创建一个圆形的ROI。
centerLocation = [220,100];半径= 60;hC = images.roi.Circle (...“父”hax,...“FaceAlpha”0,...“中心”centerLocation,...“半径”、半径);
创建一个监听器,监听ROI位置的变化(圆圈)。updateAlpha函数在本例的最后定义。
addlistener (hC,“MovingROI”, @updateAlpha);
第一次手动执行回调
updateAlpha (hC)
模拟放大到一个区域。
hC.Parent.XLim = [75 370];cc . parent . ylim = [0 205];
此文件包含实现此图像比较工具的函数的源代码。这段代码监听两个额外的事件。当用户输入“t/ t”键时,切换哪个图像在上面。该代码还侦听鼠标滚轮以增加或减少ROI的半径。
编辑helperImageComparer
回调函数在ROI对象移动时更新alpha层。
函数updateAlpha(hC, ~) hImages = findobj(hC, ~)父母,“类型”,“图像”);%从圆形ROI创建BW蒙版掩码= hC.createMask (hImages (1) .CData);%设置alpha数据,以便底层图像显示通过%只在圆圈内集(hImages (1),“AlphaData”~面具);结束