Tôi cần phát hiện Mặt trời từ bầu trời không gian.Làm thế nào để phát hiện Mặt trời từ bầu trời không gian trong OpenCv?
Đây là những ví dụ về những hình ảnh đầu vào:
Tôi đã có kết quả như sau hình thái lọc (open
hoạt động cho hai lần)
Dưới đây là mã thuật toán của quá trình xử lý này:
// Color to Gray
cvCvtColor(image, gray, CV_RGB2GRAY);
// color threshold
cvThreshold(gray,gray,150,255,CV_THRESH_BINARY);
// Morphologic open for 2 times
cvMorphologyEx(gray, dst, NULL, CV_SHAPE_RECT, CV_MOP_OPEN, 2);
Quá trình xử lý quá nặng đối với một tác vụ đơn giản như vậy không? Và làm thế nào để tìm trung tâm của Mặt trời? Nếu tôi tìm thấy các điểm trắng, hơn là tôi sẽ tìm thấy các điểm trắng của Trái đất lớn (góc trên bên trái trên hình ảnh ví dụ đầu tiên)
Vui lòng cho tôi biết thêm về hành động tiếp theo của tôi để phát hiện Mặt trời.
UPDATE 1:
Cố thuật toán nhận centroid
bởi công thức: {x,y} = {M10/M00, M01/M00}
CvMoments moments;
cvMoments(dst, &moments, 1);
double m00, m10, m01;
m00 = cvGetSpatialMoment(&moments, 0,0);
m10 = cvGetSpatialMoment(&moments, 1,0);
m01 = cvGetSpatialMoment(&moments, 0,1);
// calculating centroid
float centroid_x = m10/m00;
float centroid_y = m01/m00;
cvCircle(image,
cvPoint(cvRound(centroid_x), cvRound(centroid_y)),
50, CV_RGB(125,125,0), 4, 8,0);
Và nơi Trái đất là trong bức ảnh, tôi nhận được một kết quả như vậy:
Vì vậy, , centroid là trên trái đất. :(
UPDATE 2:
Cố cvHoughCircles
:
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* circles = cvHoughCircles(dst, storage, CV_HOUGH_GRADIENT, 12,
dst->width/2, 255, 100, 0, 35);
if (circles->total > 0) {
// getting first found circle
float* circle = (float*)cvGetSeqElem(circles, 0);
// Drawing:
// green center dot
cvCircle(image, cvPoint(cvRound(circle[0]),cvRound(circle[1])),
3, CV_RGB(0,255,0), -1, 8, 0);
// wrapping red circle
cvCircle(image, cvPoint(cvRound(circle[0]),cvRound(circle[1])),
cvRound(circle[2]), CV_RGB(255,0,0), 3, 8, 0);
}
Đầu dụ: bingo, nhưng thứ hai - không; (
tôi đã thử cấu hình khác nhau của cvHoughCircles()
- không thể tìm thấy cấu hình để phù hợp với mọi ảnh mẫu của tôi.
UPDATE3:
matchTemplate
phương pháp làm việc cho tôi (phản ứng của mevatron
). Nó làm việc với số lượng lớn các bài kiểm tra.
Thực ra, những lý do này đang hoạt động khác với những điều được đề cập. Đối với bộ khởi động, không có gì giống với mẫu được sử dụng ở bất kỳ nơi nào khác trong những hình ảnh này. Ngoài ra, điều này có nhiều khả năng chậm hơn nhiều lần so với cách tiếp cận hình thái ban đầu. – mmgp
Điểm tốt thực sự :) Tuy nhiên, vì tôi đã giả định tàu không gian trong hệ mặt trời của chúng tôi, tôi tin rằng chỉ có một mặt trời sẽ xuất hiện: D – mevatron
Tôi đoán điều này sẽ thất bại nếu có bất kỳ phần nào của HUD (phi công giao diện người dùng) nằm trên đỉnh của mặt trời. Trừ khi khớp mẫu cho điểm số về kết quả phù hợp tốt như thế nào, theo cách đó bạn có thể đạt được kết quả hàng đầu và có thể nó sẽ hoạt động với một số vật cản. –