Matlab实现将图片中选定区域进行放大

Matlab实现将图片中选定区域进行放大
在图像处理的算法比较中,经常需要将处理的最终图像放在一起进行主观比较,评判哪种算法处理的结果更好。
为了说明问题,往往需要对图片中对比明显的某一区域进行方法说明。因此用Matlab实现了如下代码:


代码如下:

clear all;
close all;
clc;

imagedir = 'D:\MatlabProjects\test_draw\imgedata\Botswana\';
outputdir = 'D:\MatlabProjects\test_draw\imgedata\Botswana_ROI\';

roi_ratio = 3;

windowLoc = [150,40];
windowSize = [30,30];
% img2 = drawRectangleFrame(imagedir,outputdir,windowLoc,[30,40]);
x = windowLoc(1);
y = windowLoc(2);
width = windowSize(1);
height = windowSize(2);

imagepsearch = strcat(imagedir,'*.png')
imagelist = dir(imagepsearch);

len = length(imagelist);

for i = 1:len
    file_name{i}=imagelist(i).name;
    image = imread(strcat(imagedir,file_name{i}));
    
    [rows,cols,depth] = size(image);
    
    img_crop = imcrop(image,[x,y,width,height]);
    img_crop=imresize(img_crop,roi_ratio,'nearest');  %最近邻放大2倍
    
    star_x = size(image,1)-size(img_crop,1)+1;  %指定横轴起始位置
    star_y = size(image,2)-size(img_crop,2)+1;  %指定纵轴起始位置
    
    image(star_x:end,star_y:end,:) = img_crop;  %按指定坐标位置开始将裁剪得图粘贴到image图上
    
    figure;
    set (gcf,'Position',[800,800,cols,rows]);
    imshow(image,'border','tight','initialmagnification','fit');
    hold on
    rectangle('Position',[x,y,width,height],'LineWidth',2,'EdgeColor','r');%给原截取区域框出来
    hold on    
    rectangle('Position',[star_y,star_x,roi_ratio*width,roi_ratio*height],'LineWidth',2,'EdgeColor','r');%给新放置区域框出来
    
    %取出figue里面得图,转换为图片格式进行保存
    frame=getframe(gcf);
    result=frame2im(frame);       
    imwrite(result,strcat(outputdir,file_name{i}));
end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值