利用MATLAB 实现高光谱影像区域截取操作

利用MATLAB 实现高光谱影像区域截取操作

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

前言:

进行高光谱图像处理或者普通的二维图像处理过程中,有时候我们需要选择图像中的某个区域进行实验,因此我们渴望在高光谱影像中有一个屏幕截图的类似功能,以方便我们根据感兴趣区域实现区域的截取,下面是笔者编写的一个matlab程序,以供学者参考研究。

1.相关函数说明

  • gca: 返回当前图形窗口上的当前坐标轴对象的句柄。如果坐标轴对象不存在,则MATLAB自动创建坐标轴对象,并返回其句柄。如果用户不希望MATLAB自动创建坐标轴对象,可以使用如下命令:get(gcf,‘CurrentAxes’)【这里可以理解为gca表示当前的图】。
  • rbbox:用于返回所选择的区域
  • get: 通常获得某个对象(即object)的属性,用法为get(对象句柄, ‘属性名’)

2. Matlab 代码

相关说明:

  • 下面以lena图像为例子进行展示
  • 该代码适用于绝大多数影像:可用于自然图像、高分影像和高光谱影像

说再多,其实都不如代码来的痛快,下面是笔者的代码,分享给各位看官老爷。

clc;clear;close all;
I = imread('C:\Users\ZephyrHou\Documents\MATLAB\datas\lena.jpg');  
imshow(I);
k = waitforbuttonpress;                   % 等待鼠标按下
point1 = get(gca,'CurrentPoint');    %  鼠标按下了,gca表示当前的图
finalRect = rbbox;                             % 返回所选择的区域
point2 = get(gca,'CurrentPoint');     % 鼠标松开了
point1 = point1(1,1:2);              % 提取出两个点,
point2 = point2(1,1:2);

% 计算位置p1为左上角坐标,p2为右下角坐标
p1 = min(floor(point1),floor(point2));             
p2 = max(floor(point1),floor(point2));

offset = abs(floor(point1)-floor(point2));         % offset(1)表示宽,offset(2)表示高
x = [p1(1) p1(1)+offset(1) p1(1)+offset(1) p1(1) p1(1)];
y = [p1(2) p1(2) p1(2)+offset(2) p1(2)+offset(2) p1(2)];
hold on                              %防止plot时闪烁
plot(x,y,'r');

% 保存选择区域图像

[rows,cols,bands]=size(I);
if bands==1
    CutI=I(p1(2):p2(2),p1(1):p2(1));
else
    CutI=I(p1(2):p2(2),p1(1):p2(1),:);
end

imwrite(CutI,'C:\Users\ZephyrHou\Desktop\cutImg.tiff');

3. 具体效果

  • 原始lena图像
    在这里插入图片描述
  • 裁剪区域图像
    在这里插入图片描述

后记

感谢Lena为数字图像处理领域做出的重大贡献。

她是让无数专家为之痴迷和痛苦的研究对象,她是充斥着枯燥数学公式的论文中最吸引眼球的光芒,翻开任何一本关于计算机图像处理的教材,你都能看到她动人的微笑。她就是雷娜(Lena),她的照片是图像处理领域使用最为广泛的标准测试图。她是真人吗?她到底从何而来?

感兴趣的小伙伴可读:

最后奉上Lena现在的照片,并感谢Lena做出的贡献,您在我们心中永远年轻!
lena

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值