更改另一图像内的图像位置

时间:2015-04-17 16:54:35

标签: image matlab image-processing embed

我需要你的帮助。 我在Matlab工作,我有两个大小为256 * 256的图像,另一个大小为64 * 64。我想将小图像嵌入到第一个图像中,但我想控制嵌入过程的位置。 例如,在大图像的角落有小图像然后我想在中间改变它... 你知道怎么样吗? 谢谢

1 个答案:

答案 0 :(得分:2)

这是一种使用ginput的方法,您可以使用它选择多个点并获取其x-y坐标。在这里,用户选择单个点(因此我们使用ginput(1)),它成为小图像的左上角,放置在大图像的“内部”。我建议将这个确切的代码复制到.m文件中并使用它。

如果您有任何疑问,请询问。

function PlaceImage

clear
clc
close all

%// Create figure and uielements
handles.fig = figure('Position',[440 400 500 230]);

handles.DispButton = uicontrol('Style','Pushbutton','Position',[20 70 80 40],'String','Select point','Callback',@PlaceImageCallback);

%// Set up big and small images
OriginalBigIm = imread('coins.png');

SmallIm = imread('circuit.tif');

SmallIm = imresize(SmallIm,[60 60]);


%// Get size of small image
[heightSmall,WidthSmall] = size(SmallIm);

imshow(OriginalBigIm,[]);


    function PlaceImageCallback(~,~)

        BigIm = OriginalBigIm;

        imshow(OriginalBigIm,[]);

        %// Select a point where to put the top-left corner of the small image
        [xTopLeft,yTopLeft] = ginput(1);

        xTopLeft = round(xTopLeft);
        yTopLeft = round(yTopLeft);

        %// Replace pixels in the big image with the small image
        BigIm(yTopLeft:yTopLeft+heightSmall-1,xTopLeft:xTopLeft+WidthSmall-1) = SmallIm;

        %// Display result
        imshow(BigIm,[]);
    end

end

按下按钮后输出样品。如果再按一次,则会显示原始图像,因此您可以根据需要更改小图像的位置。

enter image description here