這可能是一種「矯枉過正」,但您可以使用imwarp
功能:
imwarp
允許與位移(及以上)縮放。
假設:
(center_x, center_y)
是你的興趣點。
- 輸出圖像(縮放後)與輸入圖像大小相同。
- 興趣點應位於縮放後圖像的中心。
我在測試感興趣的點繪製了一個十字。
我使用'peppers.png'
圖像進行演示。
這裏是我的代碼示例:
I = imread('peppers.png');
w = size(I, 2); %Image width
h = size(I, 1); %Image height
zoom = 4; %Zoom factor x4
%Point of interest.
center_x = w/2 - 80;
center_y = h/2 - 50;
%Draw center cross for testing (thickness is 2 pixels):
I(center_y-1:center_y, center_x-5:center_x+4, :) = 255;
I(center_y-5:center_y+4, center_x-1:center_x, :) = 255;
figure;imshow(I);
%Compute displacement:
x0 = w/2 - zoom*center_x;
y0 = h/2 - zoom*center_y;
%Build transformation matrix T.
T = [zoom 0 0; ...
0 zoom 0; ...
x0 y0 1];
tform = affine2d(T); %Needed by imwarp
%J = imwarp(I, tform, 'OutputView', imref2d(size(I)), 'Interp', 'nearest'); %Select nearest interpolation.
%Apply transformation (dimensions of J will be the same as I).
J = imwarp(I, tform, 'OutputView', imref2d(size(I)), 'Interp', 'cubic'); %Select cubic interpolation.
figure;imshow(J);
輸入圖像(注意小十字):
![enter image description here](https://i.stack.imgur.com/DVAOs.png)
輸出圖像:
![enter image description here](https://i.stack.imgur.com/hPQau.png)
它的工作原理很正確的,我我會盡力適應這種情況。非常感謝。 – gary105