matlab图像局部放大,放大镜

       在用matlab画图的过程中,当图像内容过于密集或较小时,为了更清晰的了解图像内容,我们常常需要对图像进行局部放大以利于观察。这段时间我也刚好用到,也走了一些弯路,现将一些注意事项分享一下,希望对有需要的朋友有所帮助。

axes('Position',[subnormalxlabel,subnormalylabel,normalwidth,normalheight])

对于局部放大可以采用axes,其中:

subnormalxlabel,subnormalylabel,normalwidth,normalheight 分别为归一化的横坐标,纵坐标,宽度,高度。其实也就是占图窗的比例。对于图的位置、大小,我们需要知道目标起始点的坐标、图的目标宽度和目标高度就可以确定。

归一化的x坐标=(目标起始点x坐标-原点x坐标)/量程

归一化的y坐标=(目标起始点y坐标-原点y坐标)/量程

归一化的宽度=目标宽度/量程

归一化的高度=目标高度/量程

先用简单的代码随意画一张图吧

x=0:20;
y=x;
figure(1)
plot(x,y)
grid on

 一开始我是想着在坐标(8,10)处为起始点,画一个宽为6,高为6的局部放大图,即归一化坐标:

(8-0)/20=0.4;(10-0)/20=0.5;6/20=0.3;6/20=0.3。运行代码

x=0:20;
y=x;
figure(1)
plot(x,y)
grid on
axes('Position',[0.4,0.5,0.3,0.3]); % 生成子图                                                                           
plot(x,y)% 绘制局部曲线图                                                                                                                
xlim([4,8]); % 设置坐标轴范围 
ylim([4,8]);

结果图如下:

 

 从图中可以发现,和预想中的不太一样,位置和大小都有些偏差。后来也找了一下资料,看到这篇文章,链接:知乎 https://www.zhihu.com/question/510290982/answer/2304419709

这里用Ta的一张图,我觉得比较直观明了。

可以看出,所谓的原点并不是x轴,y轴坐标系的(0,0),而是蓝色方框的左下角。所以我之前的计算值会偏小,导致出现偏差。我也验证了一下,归一化x坐标为0.13,y坐标为0.11,发现刚好可以与坐标系重合。

所以我之前的想法在坐标(8,10)处为起始点,画一个宽为6,高为6的局部放大图应该这么计算:

x归一化:(x-0)/宽量程  =  x归一化值/0.775

可以解出 x归一化值,将解出的x归一化值加上0.13就是最终的 x归一化。

y归一化:(y-0)/高量程  =  y归一化值/0.815

可以解出 y归一化值,将解出的y归一化值加上0.11就是最终的 y归一化。

归一化的宽度:目标宽度/宽量程  =  归一化的宽度/0.775,直接解出归一化的宽度。

归一化的高度:目标高度/高量程  =  归一化的高度/0.815,直接解出归一化的高度。

用代码验证一下

x=0:20;
y=x;
figure(1)
plot(x,y)
grid on
axes('Position',[0.44,0.5175,0.2325,0.2445]); % 生成子图                                                                           
plot(x,y)% 绘制局部曲线图                                                                                                                
xlim([4,8]); % 设置坐标轴范围 
ylim([4,8]);

 

可以发现和预期的想法一致。当然如果不需要特别精确的话,可以用我最初的想法当作估算也是可以的,然后再根据实际需要微调即可。下面放一张效果图:

发现效果还是可以的,那么分享就到这里了,希望对你们有所帮助。

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值