MATLAB實現imrotate函式

2021-08-21 05:38:24 字數 1346 閱讀 6786

編寫演算法實現影象繞中心點旋轉功能

先找到四個頂點旋轉後的位置,然後求出新影象的大小

找到旋轉後的影象對應的原影象的位置,將原影象的顏色屬性賦給相應位置的新影象

(旋轉思想為先將影象中心點移到座標原點,然後進行旋轉,最後再將座標值換為實際的座標值進行畫素顏色屬性的賦值)

a=input('enter the picture address:','s');

b=input('enter the angle:');

r=imread(a);

angle=b*pi/180;

% r=imread('rice.png');

% angle=60*pi/180;

figure,imshow(r);

[m,n,o]=size(r);

i=[cos(angle) -sin(angle);

sin(angle) cos(angle)];

a=[n/2;m/2];

b=[n/2;-m/2];

c=[-n/2;m/2];

d=[-n/2;-m/2];

ac=round(i*[n/2;m/2]);

bc=round(i*[n/2;-m/2]);

cc=round(i*[-n/2;m/2]);

dc=round(i*[-n/2;-m/2]);

mc=max([ac(2,1),bc(2,1),cc(2,1),dc(2,1)])-min([ac(2,1),bc(2,1),cc(2,1),dc(2,1)]);

nc=max([ac(1,1),bc(1,1),cc(1,1),dc(1,1)])-min([ac(1,1),bc(1,1),cc(1,1),dc(1,1)]);

imagenew=zeros(round(mc),round(nc),o,'uint8');

j=[cos(angle) sin(angle);

-sin(angle) cos(angle)];

for i = -nc/2:nc/2

for j= -mc/2:mc/2

temp=[i;j];

old=round(j*temp);

if((round(old(2,1)+m/2)>0)&&(round(old(2,1)+m/2)0)&&(round(old(1,1)+n/2)for k=1:o

imagenew(round(j+mc/2)+1,round(i+nc/2)+1,k)=r(round(old(2,1)+m/2)+1,round(old(1,1)+n/2)+1,k);

endend

endendfigure,imshow(imagenew);

matlab實現kmeans演算法

kmeans是一種聚類演算法 無監督學習 演算法分為兩步 1.隨機選取k個聚類中心。2.計算每個樣本點離哪個聚類中心最近 距離計算 就將該樣本分為這個類。3.重新計算這k個類的聚類中心。一種簡單的計算方法為 計算每個類的平均值即為新的聚類中心。重複執行步驟2,直到聚類中心的變化小於給定閾值,或者達到...

Apriori演算法Matlab實現

clc clear 最小支援度設定 min sup 2 最小置信度 min conf 0.7 讀取檔案,當前的檔案型別是txt檔案,事務資料用數字來表示的,測試資料可以用 資料探勘概念與技術 第三版中的資料為樣本 fid fopen d matlabfile apriori dataapriori....

指派問題 MATLAB實現

適用於任意n階係數矩陣 clear all c 2 1513 4 10414 15 9 1416 13 7811 9 效率矩陣c n size c,1 計算c的行列數n c c 計算目標函式係數,將矩陣c按列排成乙個列向量即可。a b 沒有不等式約束 ae zeros 2 n,n 2 計算等約束的係...