本發明屬于圖像處理的技術領域,尤其涉及一種圖像透視變換方法。
背景技術:
透視變換是一種常見圖像處理方法。透視變換常用于圖象的校正,例如在移動機器人視覺導航研究中,由于攝像機與地面之間有一傾斜角,而不是直接垂直朝下(正投影),有時希望將圖象校正成正投影的形式,就需要利用透視變換。透視變換計算簡單,使用起來十分方便,因此在圖像處理中被廣泛使用。例如在使用攝像頭做車道線識別時就需要使用透視變換校正圖像,以便更好的提取車道線。但是傳統方法在經過透視變換后的圖像信息存在丟失,需要再對圖像做插值處理才能正常使用。
技術實現要素:
本發明所要解決的技術問題在于針對上述存在的問題,提供一種圖像透視變換方法,由透視圖反推原圖像得出通用的變換關系,得到的透視圖不再需要經過插值處理,從而節省了在插值處理上所消耗的時間,且能得到效果更好的透視圖。
本發明解決上述技術問題所采用的技術方案是:一種圖像透視變換方法,其特征在于,包括如下步驟:
S1)設備安裝,將攝像頭通過支架固定安裝,支架安設于標定板后側邊的中心處,調整攝像頭使攝像頭圖像坐標系縱向中軸線與標定板的中軸線重合;
S2)確定特征點,確定圖像坐標系和規范化坐標系,所述圖像坐標系中的原圖特征點的位置坐標為(X0,Y0),所述規范化坐標系中的原圖特征點的位置坐標為(XN,YN);
S3)計算變換矩陣,根據公式計算得出變換矩陣的各個參數值,其中:X0=Xn/w0,Y0=Yn/wn,透視圖中的每一個像素點,查詢其在原圖中所對應的像素點的灰度值,得到透視圖。
按上述方案,所述步驟S2)中包括如下內容:
S21)標定原圖矩形,將標定板前側邊的兩個角點分別作為第一原圖特征點A0和第二原圖特征點B0,將標定板左右兩側邊與整體圖像兩側邊的兩個交點分別作為第三原圖特征點C0和第四原圖特征點D0,確定特征點在圖像坐標系中的位置坐標:A0(XA0,YA0)、B0(XB0,YB0)、C0(XC0,YC0)、D0(XD0,YD0),確定原圖矩形A0B0C0D0;
S22)確定透視圖矩形,給特征點A0、B0、C0、D0在規范化坐標系中對應的第一、第二、第三、第四透視圖特征點A、B、C、D及位置坐標:A(XA,YA)、B(XB,YB)、C(XC,YC)、D(XD,YD),確定透視圖矩形ABCD。
按上述方案,所述步驟S1)中標定板的前、后側邊的長度大于或等于離攝像頭水平距離20cm處的視野寬度,標定板的左、右側邊的長度大于所述整個圖像兩側邊長度的三分之二。
按上述方案,所述原圖矩形和透視圖矩形的實際長寬比值相同。
本發明的有益效果是:提供一種圖像透視變換方法,經由攝像頭采集到的二值化圖像,在進行逆透視變換時改變從原圖像變換至透視圖的思路,通過找出一個通用的變換關系(即變換矩陣)將之變成了由透視圖反推原圖像的一種新的變換方法,能完整保存透視變換后的圖像信息,以使變換得到的透視圖效果更加好,更省時。
附圖說明
圖1為本發明一個實施例的設備安裝的示意圖。
圖2為本發明一個實施例的特征點變換的示意圖。
其中:1.標定板,2.攝像頭,3.支架。
具體實施方式
為更好地理解本發明,下面結合附圖和實施例對本發明作進一步的描述。
提供一種圖像透視變換方法,包括如下步驟:
1.設備安裝,將攝像頭通過支架固定安裝,支架安設于標定板后側邊的中心處,調整攝像頭使攝像頭圖像坐標系縱向中軸線與標定板的中軸線重合(見圖1);
2.標定原圖矩形,將標定板前側邊的兩個角點分別作為第一原圖特征點A0和第二原圖特征點B0,將標定板左右兩側邊與整體圖像兩側邊的兩個交點分別作為第三原圖特征點C0和第四原圖特征點D0,確定特征點在圖像坐標系中的位置坐標:A0(XA0,YA0)、B0(XB0,YB0)、C0(XC0,YC0)、D0(XD0,YD0),確定原圖矩形A0B0C0D0;
3.確定透視圖矩形,給特征點A0、B0、C0、D0在規范化坐標系中對應的第一、第二、第三、第四透視圖特征點A、B、C、D及位置坐標:A(XA,YA)、B(XB,YB)、C(XC,YC)、D(XD,YD),確定透視圖矩形ABCD(見圖2);
4.計算變換矩陣,變換公式為:其中:(Xn,Yn)為規范坐標系中點的坐標,(X0,Y0)為其所在原圖像中對應的坐標點,其中X0=Xn/w0,Y0=Yn/wn得:則,
帶入四個特征點A、B、C、D以及A0、B0、C0、D0的坐標得到下式:
求得a、b、c、d、e、f、u、v后,對于規范坐標系中任意一點(Xn,Yn),可以求得圖像坐標系中對應的(X0,Y0);
5.得到變換矩陣的參數后,計算得到原圖與透視圖的像素點之間的對應關系。下面是基于C語言編寫的程序:
其中:
TS_ImgHeight為透視圖的圖像的行數;
TS_ImgWidth為透視圖的圖像的列數;
ImgHeight為原圖的圖像的行數;
ImgWidth為原圖的圖像的列數;
Ts_to_org_Table為變換表;
6.得到變換表后,根據變換表遍歷透視圖的每一個像素點即可得到透視圖,
下面是基于C語言所編寫的程序:
其中:
NumTs是所到的透視圖
ImgNum是原圖。