matlab 实现点击图像绘制相应像素点的光谱曲线

这篇文章介绍了使用MATLAB实现的交互式图像处理程序,用户通过点击鼠标左键绘制光谱图像,点击鼠标中键暂停或继续。函数`rsshow_bandwise`用于调整图像的对比度,`normalize`则进行归一化处理。
摘要由CSDN通过智能技术生成

点击鼠标左键绘制对应光谱图像,点击鼠标中键暂停绘制,直到下一次点击鼠标中键再继续绘制

clc;close all;clear

t = Tiff('GF1.tif');
imageData = double(read(t));
imageData = normalize(imageData);

figure

fig = figure;
imshow(imageData(:, :, 3));

isPaused = false;
while true
    impixelinfo(fig);
    [x, y, button] = ginput(1);    
    if strcmp(get(gcf, 'SelectionType'), 'extend')
        isPaused = ~isPaused;
    end
    while isPaused
        buttonInfo = waitforbuttonpress;
        % if strcmp(get(gcf, 'SelectionType'), 'alt')
        if strcmp(get(gcf, 'SelectionType'), 'extend')
            isPaused = false;
        end
    end    
    pixelValue = squeeze(imageData(round(y), round(x), :));
    figure(1)
    plot(pixelValue);
    plotTitle = title(['Spectral Curve', 'x:', num2str(x), 'y:', num2str(y)]);
    xlabel('Band');
    ylabel('Pixel Value');    
    ylim([0, 1])
    pause(0.1)

end




function I=rsshow_bandwise(I, scale)
    if nargin==1
        scale=0.005;
    end
    I = double(I);
    for i = 1:size(I,3)
        band = I(:,:,i);
        q = quantile(band(:),[scale, 1-scale]);
        [low, high] = deal(q(1),q(2));
        band(band>high) = high;
        band(band<low) = low;
        band = (band-low)/(high-low);
        I(:,:,i)=band;
    end
end

function I = normalize(I)
    low = min(I(:));
    high = max(I(:));
    I = (I - low) / (high - low);
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值