我想知道如何使用Matlab R2016b沿Z軸旋轉2D圖像並在執行此過程後獲取圖像。在Matlab上將2D圖像轉換爲旋轉的3D圖像
例如,讓我們這個2D圖像:
現在,我將其旋轉45°大致爲:
而現在,90°:
你知道是否可以在Matlab R2016b中執行相同的操作嗎?
非常感謝您的幫助
圖片來源:https://www.youtube.com/watch?v=m89mVexWQZ4
我想知道如何使用Matlab R2016b沿Z軸旋轉2D圖像並在執行此過程後獲取圖像。在Matlab上將2D圖像轉換爲旋轉的3D圖像
例如,讓我們這個2D圖像:
現在,我將其旋轉45°大致爲:
而現在,90°:
你知道是否可以在Matlab R2016b中執行相同的操作嗎?
非常感謝您的幫助
圖片來源:https://www.youtube.com/watch?v=m89mVexWQZ4
是的,它是可能的。最簡單的做法是將圖像以3D形式映射到y = 0
平面上,然後將攝像機旋轉到所需的方位角或相對於軸的角度。一旦你這樣做了,你可以使用getframe/cdata
成語來實際捕獲變量本身的實際圖像數據。之所以這樣做,是因爲我將用於顯示圖像的方法是通過surf
命令繪製3D曲面圖,但這裏的軸是進出軸的軸的屏幕。軸x
軸是水平軸,當顯示數據時軸將是垂直軸。
首先使用諸如imread
之類的東西讀取圖像,然後您需要定義映射到3D平面的圖像的4個角,然後旋轉相機。您可以使用view
功能幫助您通過調整方位角(第一個參數)並將仰角保持爲0來旋轉攝像頭。
類似這樣的東西可以起作用。我將使用辣椒形象,是圖像處理工具箱的一部分:
im = imread('peppers.png'); % Read in the image
ang = 45; % Rotate clockwise by 45 degrees
% Define 4 corners of the image
X = [-0.5 0.5; -0.5 0.5];
Y = [0 0; 0 0];
Z = [0.5 0.5; -0.5 -0.5];
% Place the image on the y = 0 plane
% Turn off the axis and rotate the camera
figure;
surf(X, Y, Z, 'CData', im, 'FaceColor', 'texturemap');
axis('off');
view(ang, 0);
% Get the image data after rotation
h = getframe;
rot_im = h.cdata;
rot_im
包含旋轉圖像。爲了欣賞圖像的旋轉,我們可以實時循環0到360度的角度。在每個角度,我們可以使用view
動態旋轉相機並使用drawnow
來更新數字。我還更新了該圖的標題,以向您展示每次更新時的角度。造成這種情況的代碼如下以及保存爲GIF動畫輸出:
for ang = 0 : 360
view(ang, 0);
pause(0.01);
drawnow;
title(sprintf('Angle: %d degrees', ang));
end
是的,它是可能的。甚至有一個答案,並詳細描述瞭如何在這個網站上做到這一點,但不幸的是,這個問題被擱置了。你的研究成果是什麼?你有什麼嘗試? – beaker
嗨,謝謝你的回答:)真可惜...這個答案現在已經非常有用了。我嘗試使用投影變換,但它沒有按預期工作。此外,我想通過Matlab中的投影變換檢索不可能的旋轉角度。我能做什麼 ? –
對於如何解決這個*如果沒有* 3-D繪圖,並改爲使用圖像轉換,請參閱[這個問題](https://stackoverflow.com/q/47273993/52738) – gnovice