第一篇记录,Matlab比较两幅图像的像素值

function CompareImg(A1 , A2)
    if size(A1) ~= size(A2)
        disp('两幅图像的大小不一致');
    else    
        F1 = figure;
        set(F1,'units','normalized','position',[0 0 1 1])
        subplot(1,2,1);
        imshow(A1);
        a1 = get(F1,'currentaxes');
        set(a1,'position',[0 0 0.5 1])
        
        subplot(1,2,2);
        imshow(A2);
        a2 = get(F1,'currentaxes');
        set(a2,'position',[0.5 0 0.5 1])
        dcm = datacursormode;
        datacursormode on;
        set(dcm,'DisplayStyle','Datatip','UpdateFcn',{@Compare_Callback,A1,A2});
        h = zoom;
        set(h,'ActionPostCallback',@zoomcallback);
        set(h,'enable','off');
    end
    function zoomcallback(~,~)
     YLim = get(gca,'ylim');
     XLim = get(gca,'xlim');
         if gca == a2
             set(a1,'xlim',XLim,'YLim',YLim);
         else
             set(a2,'xlim',XLim,'YLim',YLim);
         end
    end
    function output_txt = Compare_Callback(obj, event_obj, orig,targ)
        pos = get(event_obj,'Position');
        i = round(pos(1));
        j = round(pos(2));
        G = orig(j,i);
        if nargin == 4
            G1 = targ(j,i);   
            output_txt = {['COL: ',num2str(i,4),'  ROW: ',num2str(j,4), char(10),...
                '左侧G: ',num2str(round(G)), '  右侧G: ',num2str(round(G1))]};
        end
    end
end
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,两幅图像的直方匹配是一种常用的图像处理技术,用于改变一幅图像像素值分布,使其与另一幅图像像素值分布相似。 首先,我们可以使用imhist函数计算两幅图像的直方,该函数将图像像素值范围划分为若干个区间,并统计每个区间中像素的个数。 然后,可以使用cumsum函数分别计算两幅图像的累积分布函数(CDF),即每个像素值以下的像素个数占总像素数的比例。通过这个操作,我们可以得到两幅图像的累积直方。 接下来,可以使用interp1函数对第二幅图像的CDF进行插值,以便在第一幅图像像素值范围内找到与之相对应的像素值。 最后,应用插值后的CDF和第一幅图像像素值构成的映射关系,将第一幅图像的每个像素值替换成其在第二幅图像中对应的像素值。 可以使用以下代码实现上述步骤: ```matlab % 读入两幅图像 img1 = imread('image1.jpg'); img2 = imread('image2.jpg'); % 计算两幅图像的直方 hist1 = imhist(img1); hist2 = imhist(img2); % 计算两幅图像的累积分布函数 cdf1 = cumsum(hist1) / numel(img1); cdf2 = cumsum(hist2) / numel(img2); % 对第二幅图像的CDF进行插值 cdf2_interp = interp1(linspace(0, 1, 256), cdf2, linspace(0, 1, 256)); % 对第一幅图像的每个像素值进行替换 img1_matched = uint8(interp1(linspace(0, 1, 256), cdf2_interp, double(img1(:))) * 255); % 将替换后的像素值重构成与原图像一样的尺寸 img1_matched = reshape(img1_matched, size(img1)); % 显示结果 figure; subplot(1, 2, 1); imshow(img1); title('原图像'); subplot(1, 2, 2); imshow(img1_matched); title('直方匹配后的图像'); ``` 以上就是利用MATLAB进行直方匹配的基本步骤,并使用插值得到第一幅图像与第二幅图像像素值对应关系的方法。直方匹配可以用于图像增强、颜色转换、图像配准等应用中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值