如何使用MATLAB实现标记感兴趣区域并将其放大

本文介绍了一种在图像处理中,使用红色边框标记并放大图像局部区域的方法。通过自定义MATLAB函数ShowEnlargedPatch,实现了感兴趣区域的定位、放大及重新定位。该方法适用于灰度图像,未来计划优化以支持RGB图像及更灵活的区域放置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在图像处理中,常常会遇到这样一个问题:如何将图像中某一小块使用红色边框标记,然后再将其放大放置于左下角?之前在网上查找了很多关于此类方法的解决方法,但是都失败了。最后自己编写了一个小的程序来实现改功能。其代码如下:

Img = imread('Lena.png');
Local_Zoom = ShowEnlargedPatch(Img, 241, 426, 70, 70, 2, 2);
imwrite(Local_Zoom, '.../Results/Local_Zoom.tif');

子函数ShowEnlargedPatch():

function O_img = ShowEnlargedPatch(Img, Row, Col, WindowRow, WindowCol, LineWidth, Scale)
% 函数输入说明:
%  Row, Col:  感兴趣区域的左上角横纵坐标(在图像表现为行、列)
% WindowRow, WindowCol: 感兴趣区域大小
% LineWidth:  线的宽度
% Scale:  感兴趣区域放大的倍数
% 函数输出:
% O_img: 合成后的输出图像

[height width] = size(Img);
Patch(:,:) = Img(Row-LineWidth:Row+LineWidth+WindowRow, Col-LineWidth:Col+LineWidth+WindowCol);
Interpolation_Method = 'bicubic';   
Enlarged = imresize(Patch, Scale, Interpolation_Method);

[m n] = size(Enlarged);

EnlargedShowStartRow = height - LineWidth;
EnlargedShowStartCol = 1 + LineWidth;

Img(EnlargedShowStartRow - m + 1:EnlargedShowStartRow,EnlargedShowStartCol:EnlargedShowStartCol + n - 1) = Enlarged(:,:);

Point = [EnlargedShowStartCol EnlargedShowStartRow-m m n];
figure, imshow(Img, 'border', 'tight')
hold on;
rectangle('Position', [Col Row WindowCol WindowRow], 'LineWidth', 2, 'EdgeColor', 'r')
rectangle('Position', Point, 'LineWidth', 2, 'EdgeColor', 'r')

frame = getframe(gcf, [0 0 512 512]);
O_img = frame2im(frame);

其执行后的效果见下图:
在这里插入图片描述
此函数只是将感兴趣区域放大后放置在左下角,并没有对该函数进行优化,后续将会对其进行优化,可以将放大后的区域放置在任何位置。另外,该函数目前也是针对于灰度图像,并没有对RGB图像。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值