我在一個項目中工作,我需要使用白色測量板來測量水位。目前我的方法是:如何檢測測量水位的白色測量板?
- 分割白色儀表板。
- 測量儀表板上的水位。
但我會卡在分割的儀表盤。我避免使用基於顏色的分割,因爲我需要它與光線變化不變,所以我使用形態學操作來檢測邊緣。我有這個圖片:
結果從形態學操作很有前途。白色儀表板上的邊緣比其他邊緣更清晰。但我仍然沒有任何想法來適當地分割董事會。你能提出一種算法來分割電路板嗎?或者請建議您是否有不同的測量水位的算法。
這裏是我的代碼:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
int main()
{
cv::Mat src = cv::imread("image.jpg");
if (!src.data)
return -1;
cv::Mat bw;
cv::cvtColor(src, bw, CV_BGR2GRAY);
cv::medianBlur(bw, bw, 3);
cv::Mat dilated, eroded;
cv::dilate(bw, dilated, cv::Mat());
cv::erode(bw, eroded, cv::Mat());
bw = dilated - eroded;
cv::imshow("src", src);
cv::imshow("bw", bw);
cv::waitKey();
return 0;
}
我使用的是C++,但我願意在Matlab/Mathematica的其他實現。
是您的相機在固定的位置?量表的圖像有多少? – DCS 2013-03-15 13:10:22
@DCS是的,我們可以假設攝像機位於固定位置。也許圖像的顏色會有所不同,例如:早上,晚上等。 – flowfree 2013-03-15 13:26:17
如果攝像機位於固定位置,您難道不能對測量板分割進行硬編碼嗎? – 2013-03-15 13:28:58