MATLAB影象旋轉原始碼
程式碼如下:
程式碼如下:
clear;
clc;
%要旋轉的角度,旋轉方向為順時針
jiaodu=input('請輸入角度:');
[filename,pathname]=uigetfile({'*jpg;*.bmp;*.jpeg;*.png;'},'load?image');
fpath=fullfile(pathname,filename);
img=imread(fpath);
img=rgb2gray(img);
imshow(img); %這裡y為變換後影象的高度,x為變換後影象的寬度
[h w]=size(img);
theta=jiaodu/180*pi;
rot=[cos(theta) -sin(theta) 0;sin(theta) cos(theta) 0;0 0 1];
pix1=[1 1 1]*rot; %變換後影象左上點的座標
pix2=[1 w 1]*rot; %變換後影象右上點的座標
pix3=[h 1 1]*rot; %變換後影象左下點的座標
pix4=[h w 1]*rot; %變換後影象右下點的座標
%變換後影象的高度
height=round(max([abs(pix1(1)-pix4(1))+0.5 abs(pix2(1)-pix3(1))+0.5]));
%變換後影象的寬度
width=round(max([abs(pix1(2)-pix4(2))+0.5 abs(pix2(2)-pix3(2))+0.5]));
imgn=zeros(height,width);
%取得y方向的負軸超出的偏移量
delta_y=abs(min([pix1(1) pix2(1) pix3(1) pix4(1)]));
%取得x方向的負軸超出的偏移量
delta_x=abs(min([pix1(2) pix2(2) pix3(2) pix4(2)]));
for i=1-delta_y:height-delta_y
for j=1-delta_x:width-delta_x
%用變換後影象的點的座標去尋找原影象點的座標,
pix=[i j 1]/rot;
%否則有些變換後的影象的畫素點無法完全填充
float_Y=pix(1)-floor(pix(1));
float_X=pix(2)-floor(pix(2));
if pix(1)>=1 && pix(2)>=1 && pix(1) <= h && pix(2) <= w
pix_up_left=[floor(pix(1)) floor(pix(2))]; %四個相鄰的點
pix_up_right=[floor(pix(1)) ceil(pix(2))];
pix_down_left=[ceil(pix(1)) floor(pix(2))];
pix_down_right=[ceil(pix(1)) ceil(pix(2))];
value_up_left=(1-float_X)*(1-float_Y); %計算臨近四個點的權重
value_up_right=float_X*(1-float_Y);
value_down_left=(1-float_X)*float_Y;
value_down_right=float_X*float_Y;
imgn(i+delta_y,j+delta_x)=value_up_left*img(pix_up_left(1),pix_up_left(2))+...
value_up_right*img(pix_up_right(1),pix_up_right(2))+ ...
value_down_left*img(pix_down_left(1),pix_down_left(2))+ ...
value_down_right*img(pix_down_right(1),pix_down_right(2));
end
end
end
figure,
subplot(121);
imshow(img);
subplot(122);
imshow(uint8(imgn))
結果如下:
相關文章
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- matlab中將RGB影象轉化為灰度影象Matlab
- 【開源】canvas影象裁剪、壓縮、旋轉Canvas
- 吐嘈OpenCV的影象旋轉功能 >_<7OpenCV
- canvas 影象旋轉與翻轉姿勢解鎖Canvas
- 影像旋原始碼原始碼
- matlab練習程式(旋轉、徑向模糊)Matlab
- matlab影象輸入Matlab
- MATLAB中的影象融合Matlab
- MATLAB數字影象處理(二)影象增強Matlab
- 玩轉matlab之一維 gauss 數值積分公式及matlab原始碼Matlab公式原始碼
- matlab練習程式(影象球面化)Matlab
- matlab練習程式(影象馬賽克)Matlab
- app直播原始碼,css預載入旋轉動畫 與 流光字型APP原始碼CSS動畫
- 影象放大並進行BiCubic插值 Matlab/C++程式碼MatlabC++
- 旋轉文字的CSS程式碼CSS
- matlab影象處理常用命令Matlab
- 影片直播app原始碼,css預載入旋轉動畫與流光字型APP原始碼CSS動畫
- 直播app系統原始碼,圖片Loading旋轉動畫效果APP原始碼動畫
- 【數字影象處理】六.MFC空間幾何變換之影象平移、映象、旋轉、縮放詳解
- 記一道有意思的演算法題Rotate Image(旋轉影象)演算法
- Matlab以MEX方式呼叫C原始碼Matlab原始碼
- autodesk-forge 模型旋轉程式碼模型
- 除錯旋轉編碼器成功除錯
- matlab練習程式(隨機遊走影象)Matlab隨機
- 旋轉變換(一)旋轉矩陣矩陣
- 玩轉 matlab 之二維 gauss 數值積分公式使用及 matlab 原始碼(1)-常量區間Matlab公式原始碼
- 影片直播app原始碼,純JS實現旋轉木馬/3d相簿APP原始碼JS3D
- 直播軟體原始碼,CSS3實現圖片立體旋轉動畫原始碼CSSS3動畫
- 直播原始碼網站,點選圖片可進行任意方向旋轉功能原始碼網站
- matlab練習程式(模糊集影象增強)Matlab
- 【原始碼】使用MATLAB進行ECG模擬原始碼Matlab
- 基於Matlab Coder將matlab程式碼轉換成c程式碼MatlabC程式
- 旋轉字串字串
- 將圖片旋轉(這裡不是旋轉imageView)View
- matlab中中影象PSNR和SSIM的計算Matlab
- matlab之讀取fig影象裡的資料Matlab
- stitching.cpp魚眼影象拼接融合 原始碼分析原始碼