之前工作上需要做一個這個小算法,我在網上查了下基本都是矩陣平移縮放旋轉等原理講解,比較復雜,但是我這里只平移和縮放不需要用矩陣,解出下面組方程的a、b、c、d就好了
x=ax'+b
y=cy'+d
解這個方程需要兩組對應點,下面直接給出帶入求解結果:
a = (p2.x - p1.x) / (float)(p_2.x - p_1.x);
b = (p1.x*p_2.x - p2.x*p_1.x) / (float)(p_2.x - p_1.x);
c = (p2.y - p1.y) / (float)(p_2.y - p_1.y);
d = (p1.y*p_2.y - p2.y*p_1.y) / (float)(p_2.y - p_1.y);
其中p1和p2是一組對應點,p_1和p_2是另一組,另外如果加上圖像旋轉的話方程就變成下面:
x = x'a-y'b+h
y = x'c+y'd+k
這個方程六個未知數所以需要三組點,而且這個方程直接解會比較麻煩可以用矩陣求得。