當前位置:編程學習大全網 - 網站源碼 - OpenCV中如何計算某像素點的具體梯度值

OpenCV中如何計算某像素點的具體梯度值

其實妳用了cvsobel後,每個像素的梯度已經計算出來,並存放到dst裏面了,妳可以訪問dst求取具體某點的梯度,如果妳問的是cvsobel怎麽計算每點梯度的,妳看壹下函數說明

void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 )

src:輸入圖像;dst:輸出圖像;xorder:x 方向上的差分階數;yorder:y 方向上的差分階數;aperture_size 擴展 Sobel 核的大小(既窗口階數),必須是 1(註意這是壹個3×1或1×3向量而不是壹個方陣), 3, 5 或 7。

事實上計算機在求解析解要比求數值解麻煩得多,所以就想到了壹種替代的方式來求導數。就是用壹個3×3的窗口來對圖像進行近似求導。拿對X方向求導為例,某壹點的導數為第三行的元素之和減去第壹行元素之和,這樣就求得了某壹點的近似導數。其實也很好理解為什麽它就近似代表導數,導數就代表壹個變化率,從第壹行變為第三行,灰度值相減,當然就是壹個變化率了。這就是所謂的Prewitt算子。這樣近似X方向導數就求出來了。Y方向導數與X方向導數求法相似,只不過是用第三列元素之和減去第壹列元素之和。X方向和Y方向導數有了,那麽梯度也就出來了。

  • 上一篇:教務管理系統應該怎麽做
  • 下一篇:什麽是首因效應;光圈效應,寬大效應,期望效應?
  • copyright 2024編程學習大全網