2014年3月24日 星期一

影像增強 (直方圖均化 )與邊緣偵測 與邊緣偵測



直方圖均衡化 (Histogram Equalization)是通過灰度變換將一影像轉換為另一影像具有均衡直方圖,即在每個灰度級上都具有相同的像素點數過程。從分佈圖上的理解就是希望原始圖像中y軸的值在新的分佈中能盡可能的展開。變換過程是利用累​​積分佈函數對原始分佈進行映射,生成新的均勻拉伸的分佈。因此對應每個點的操作是尋找原始分佈中y值在均勻分佈中的位置,如下圖是理想的單純高斯分佈映射的示意圖:



 透過內件函式equalizeHist( )
可以看出經過處理的圖片亮度可以更好地分佈在直方圖上


均化後的直方圖





------------------------------------------------------------------------------------------------------------

sobel operators:

Edge detection 的目的是要找出灰階有劇烈變化的
邊界。
透過函式Sobel() 的方法就是算出影像的垂直梯度(gradient)與水平梯度
兩者取絕對值相加










參考資料:

sobel operators:
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/sobel_derivatives/sobel_derivatives.html
直方圖:
http://www.csdn123.com/html/itweb/20131102/200940.htm
histogram-equalization:
http://cg2010studio.wordpress.com/2012/11/12/opencv-histogram-equalization-%E7%9B%B4%E6%96%B9%E5%9C%96%E5%9D%87%E8%A1%A1%E5%8C%96/

2014年3月12日 星期三

影像的縮放與旋轉

一張圖片的RGB是存在data的一維陣列裡,所以我們透過上面的方法把它轉成二維陣列,一張圖片的寬度width還要乘3,也就是3個channel(R,G,B)就等於widthstep

data裡面的儲存方式:
BGRBGRBGR
BGRBGRBGR
BGRBGRBGR

Nearest Neighbor Image Scaling

經過各種複雜的演算法之後我們會算出哪個顏色該放在哪個位子,再將三個顏色放回照片的data裡,
以下是資料的儲存方式:
Blue[][]:              Red[][]:              Green[][]:                 data:
B B B                  R R R               G G G                       BGRBGRBGR
B B B                  R R R               G G G                       BGRBGRBGR
B B B                  R R R               G G G                       BGRBGRBGR

以放大兩倍為例,只要將顏色放兩次即可,如下
BGRBGR BGRBGR BGRBGR
BGRBGR BGRBGR BGRBGR

BGRBGR BGRBGR BGRBGR
BGRBGR BGRBGR BGRBGR

BGRBGR BGRBGR BGRBGR
BGRBGR BGRBGR BGRBGR

data裡的資料就變成這樣

---------------------------------------------------------------------------------------------- 



旋轉



我們先建立一個一樣大小的二陣列維nBlue,nGreen,nRed來儲存旋轉後的的顏色再用一樣的方法放回影像的data裡




參考資料
http://yester-place.blogspot.tw/2008/07/iplimage2_11.html