Jump to content
Compvision.ru

slicktail

Пользователи
  • Content count

    28
  • Joined

  • Last visited

  • Days Won

    1

slicktail last won the day on February 25 2012

slicktail had the most liked content!

Community Reputation

1 Новичек

About slicktail

  • Rank
    Бывалый
  1. Еще вопрос, где можно взять набор неректифицированных изображений для теста?
  2. Спасибо, скажите, зачем указывают две карты диспаритета? Насколько я понимаю, карта диспаритета одна строится по двум изображениям. Какую брать?
  3. Подскажите, как можно сравнить disparity maps между собой? Насколько я понимаю, они представляют собой матрицу нормализованную со значениями от 0 до 255 (уже после нормализации). Как можно таким образом сравнить два алгоритма между собой?
  4. А каким образом можно в clr-проекте сделать кнопку, при нажатии на которую бы вызывались все функции, написанные не под win forms? Например, button: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { cv::Mat frame2 = cv::imread("1.bmp",1); cv::namedWindow("My Window", CV_WINDOW_AUTOSIZE); cv::imshow("My Window",frame2); } Появляется окно созданное, и тут же возникает ошибка. "External component has thrown an exception."
  5. Работа с контурами

    Сравниваю изображения при помощи моментов. 1.Черный квадрат 8х8 (все пиксели со значением 0) 2.Белый квадрат 8х8 (все пиксели со значением 255) 3.Черный квадрат 8х8 с белыми пикселями (пиксели со значением 0, немного 255 значений) На 1 больше всего похоже изображение 3. В этом можно убедиться, если сравнить попиксельно их (см моменты m00 - это и есть сумма пикселей). Как видно, моменты изображения 3 меньше моментов изображения 2. Но как только дело доходит до нормализованных моментов и моментов Ху, то на изображение 1 более похожим становится изображение 2, хотя это очевидно не так. Прошу совета, где здесь подводный камень. Моменты Черный квадрат 8х8 Белый квадрат 8х8 Черный квадрат 8х8 (немного белых пикселей) m00: 0.00000000000000000 m00: 16320.000000000000 m00: 66.000000000000000 m10: 0.00000000000000000 m10: 57120.000000000000 m10: 201.00000000000000 m01: 0.00000000000000000 m01: 57120.000000000000 m01: 66.000000000000000 m20: 0.00000000000000000 m20: 285600.00000000000 m20: 813.00000000000000 m11: 0.00000000000000000 m11: 199920.00000000000 m11: 201.00000000000000 m02: 0.00000000000000000 m02: 285600.00000000000 m02: 66.000000000000000 m30: 0.00000000000000000 m30: 1599360.0000000000 m30: 3747.0000000000000 m21: 0.00000000000000000 m21: 999600.00000000000 m21: 813.00000000000000 m12: 0.00000000000000000 m12: 999600.00000000000 m12: 201.00000000000000 m03: 0.00000000000000000 m03: 1599360.0000000000 m03: 66.000000000000000 mu20: 0.00000000000000000 mu20: 85680.000000000000 mu20: 200.86363636363637 mu11: 0.00000000000000000 mu11: 0.00000000000000000 mu11: 0.00000000000000000 mu02: 0.00000000000000000 mu02: 85680.000000000000 mu02: 0.00000000000000000 mu30: 0.00000000000000000 mu30: 0.00000000000000000 mu30: 47.603305785124121 mu21: 0.00000000000000000 mu21: 0.00000000000000000 mu21: 0.00000000000000000 mu12: 0.00000000000000000 mu12: 0.00000000000000000 mu12: 0.00000000000000000 mu03: 0.00000000000000000 mu03: 0.00000000000000000 mu03: 0.00000000000000000 nu20: 0.00000000000000000 nu20: 0.00032169117647058818 nu20: 0.046111945905334344 nu11: 0.00000000000000000 nu11: 0.00000000000000000 nu11: 0.00000000000000000 nu02: 0.00000000000000000 nu02: 0.00032169117647058818 nu02: 0.00000000000000000 nu30: 0.00000000000000000 nu30: 0.00000000000000000 nu30: 0.0013451703132773241 nu21: 0.00000000000000000 nu21: 0.00000000000000000 nu21: 0.00000000000000000 nu12: 0.00000000000000000 nu12: 0.00000000000000000 nu12: 0.00000000000000000 nu03: 0.00000000000000000 nu03: 0.00000000000000000 nu03: 0.00000000000000000 Моменты ХУ [0]: 0.00000000000000000 [0]: 0.00064338235294117635 [0]: 0.046111945905334344 [1]: 0.00000000000000000 [1]: 0.00000000000000000 [1]: 0.0021263115551764808 [2]: 0.00000000000000000 [2]: 0.00000000000000000 [2]: 1.8094831717226144e-006 [3]: 0.00000000000000000 [3]: 0.00000000000000000 [3]: 1.8094831717226144e-006 [4]: 0.00000000000000000 [4]: 0.00000000000000000 [4]: 3.2742293487473322e-012 [5]: 0.00000000000000000 [5]: 0.00000000000000000 [5]: 8.3438790131086014e-008 [6]: 0.00000000000000000 [6]: 0.00000000000000000 [6]: 0.00000000000000000
  6. Работа с контурами

    Вот ответ на мой вопрос: "Mat-s should be of type either CV_32SC2 or CV_32FC2 and have dimention 1xN or Nx1; this is because contour is a sequence of Points, i.e. a single row or a single column of X & Y pairs."
  7. Работа с контурами

    Хотел бы сравнить два изображения при помощи matchShapes Mat image = imload("image.jpg"); Mat grey_scale = cvtColor(image,grey_scale,CV_RGB2GRAY); matchShapes(grey_scale,grey_scale,CV_CONTOURS_MATCH_I1,0); Получаю Unhandled exception А в описании написано: double matchShapes(InputArray object1, InputArray object2, int method, double parameter=0 ) Parameters: object1 – First contour or grayscale image. object2 – Second contour or grayscale image. Если же указывать вместо Mat контуры, то все отлично. Посоветуйте, в чем может быть загвоздка?
  8. Работа с контурами

    С другой стороны, вообще-то нигде не говорится, что это контуры. Ну это ж также, центр масс изображения и т.п. - моменты же это и обозначают. Матрица - это изображение. Мне кажется можно и использовать моменты для grayscale
  9. Работа с контурами

    Вот, получается данную матрицу 8х8 нужно бинаризовать? Содержит она значения пикселей яркости от 0 до 255
  10. Работа с контурами

    А зачем тогда есть возможность вычислять момент матрицы? Может быть эта функция считает контур матрицы и находит именно момент этого контура?
  11. Работа с контурами

    Смысл в том, чтобы сравнивать блоки не при помощи метрики SSD или SAD. А вычислить моменты двух блоков, и сравнить их.
  12. Работа с контурами

    "Parameters: C++: Moments moments(InputArray array, bool binaryImage=false ) array – Raster image (single-channel, 8-bit or floating-point 2D array) or an array ( or ) of 2D points (Point or Point2f ). binaryImage – If it is true, all non-zero image pixels are treated as 1’s. The parameter is used for images only. moments – Output moments." Получается, в OpenCV для матрицы 8х8 нельзя посчитать момент? А что тогда это считает у меня данная функция?
  13. Работа с контурами

    Продолжу тему с моментами в Opencv. Допустим, есть две матрицы 8х8 с числами от 0 до 255. Задача - вычислить моменты такой матрицы и сравнить их. Mat M_Block_yPrev(8,8,CV_8UC1); Moments moments_Block_yPrev = moments(M_Block_yPrev,false); double Hu_moments_Block_yPrev[7]; HuMoments(moments_Block_yPrev,Hu_moments_Block_yPrev); В moments_Block_yPrev и Hu_moments_Block_yPrev я получу данные. Для второй матрицы - аналогично. Теперь, каким образом сравнить моменты двух матриц с помощью matchShapes() ? Спасибо.
  14. Получил матрицу векторов объектов движения. Хотел бы объединить вектора движения посредством кластеризации, например k-means. Кто-либо делал такое под OpenCV? Мне показались для моей задачи слишком навороченными функции в OpenCV (в разделе ml. Machine Learning). "You may want to look at MeanShift clustering which has several advantages over K-Means: Doesn't require a preset number of clusters K-Means clusters converge to n-dimensional voronoi grid, MeanShift allows other cluster shapes" Как можно просто сгруппировать в кластеры схожие значения из матрицы посредством OpenCV? Интересует какой-нибудь пример кода из вашей задачи.
  15. Сравнение двух кадров видео

    Разобрался в итоге, может кому пригодится: int main() { VideoCapture capture("C:\\ice_cif.avi"); double rate= capture.get(CV_CAP_PROP_FPS); int delay= 1000/rate; Mat currFrame; Mat prevFrame; namedWindow("currFrame"); namedWindow("prevFrame"); capture.read(currFrame); currFrame.copyTo(prevFrame); bool stop(false); while(!stop){ if(!capture.read(currFrame)) break; imshow("currFrame",currFrame); imshow("prevFrame",prevFrame); currFrame.copyTo(prevFrame); if(waitKey(delay)>=0) stop = true; } capture.release(); }
×