📄 implace.m
字号:
% IMPLACE - place image at specified location within larger image%% Usage: newim = implace(im1, im2, roff, coff)%% Arguments:%% im1 - Image that im2 is to be placed in.% im2 - Image to be placed.% roff - Row and column offset of placement of im2 relative % coff to im1, (0,0) aligns top left corners.%% Warning: The class of final image matches the class of im1. If im1 is of% type double and im2 is a uint8 colour image you will obtain a double image% having 3 colour channels with values ranging between 0-255. This will% need to be cast to uint8, or divided by 255, for display via imshow or% show.% Copyright (c) 2004-2008 Peter Kovesi% School of Computer Science & Software Engineering% The University of Western Australia% http://www.csse.uwa.edu.au/% % Permission is hereby granted, free of charge, to any person obtaining a copy% of this software and associated documentation files (the "Software"), to deal% in the Software without restriction, subject to the following conditions:% % The above copyright notice and this permission notice shall be included in % all copies or substantial portions of the Software.%% The Software is provided "as is", without warranty of any kind.% September 2004 Original version% July 2008 Bug fixes for colour imagesfunction newim = implace(im1, im2, roff, coff) [rows1, cols1, d] = size(im1); [rows2, cols2, d] = size(im2); % Find min row and column of im2 that will appear in im1 rmin2 = max(1,1-roff); cmin2 = max(1,1-coff); % Find min row and column within im1 that im2 covers rmin1 = max(1,1+roff); cmin1 = max(1,1+coff); % Find max row and column of im2 that will appear in im1 rmax2 = min(rows1-roff, rows2); cmax2 = min(cols1-coff, cols2); % Find max row and column within im1 that im2 covers rmax1 = min(rows2+roff, rows1); cmax1 = min(cols2+coff, cols1); % Check for the case where there is no overlap of the images if rmax1 < 1 | cmax1 < 1 | rmax2 < 1 | cmax2 < 1 | ... rmin1 > rows1 | cmin1 > cols1 | rmin2 > rows2 | cmin2 > cols2 newim = im1; % Simply copy im1 to newim else % Place im2 into im1 % Check if either image is colour and if one needs promoting to colour ndim1 = ndims(im1); ndim2 = ndims(im2); if ndim1 == 2 & ndim2 == 3 fprintf('promoting im1 \n'); im1 = uint8(repmat(im1,[1,1,3])); % 'Promote' im1 to 3 channels ndim1 = 3; elseif ndim2 == 2 & ndim1 == 3 fprintf('promoting im2 \n'); im2 = uint8(repmat(im2,[1,1,3])); % 'Promote' im2 to 3 channels ndim2 = 3; end newim = im1; if ndim1 ==2 % Greyscale newim(rmin1:rmax1, cmin1:cmax1) = ... im2(rmin2:rmax2, cmin2:cmax2); else % Assume colour newim(rmin1:rmax1, cmin1:cmax1,:) = ... im2(rmin2:rmax2, cmin2:cmax2,:); end end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -