Перейти к содержимому
Compvision.ru

vetatto

Пользователи
  • Количество публикаций

    18
  • Зарегистрирован

  • Посещение

Репутация

0 Новичек

О vetatto

  • Звание
    Бывалый
  1. Выделение стеблей от фона

    Привет всем. Извиняюсь, что исчез на пару месяцев мучился с дипломом. В итоге у меня все получилось. Сделал почти все, что планировалось. Вот результаты. исходное результат Еще при помощи преобразования Хафа была найдена угловая дезориентация между стеблями. Только вот осталось определить диаметры этих стеблей, но это наверное уже позже если буду дальше учиться или не я вообще буду делать)) Спасибо большое форуму, а особенно Smorodov
  2. Выделение стеблей от фона

    Спасибо. Попробую всеж сначала cvDFT функцию в OpenCv.
  3. Выделение стеблей от фона

    Нет, но сейчас почитал. Можно попробовать. Думаю вполне реально использовать. Только вот я все еще это на delphi пишу)) Так, что камушков подводных тьма тут))
  4. Выделение стеблей от фона

    Привет всем) Вот и снова я вернулся. Смог я выделить слой стеблей процентов на 90 (мне этой точности за глаза). Только вот теперь встала новая задача, определить угол наклона стеблей. Преобразование Хафа находит линии, но это очень долго, разрешение 4912 на 3264. Есть конечно вариант взять несколько точек (штук 10) построить вокруг них окружность, взять все точки не черного цвета на окружности, построить прямые до этих точек от центра с условием, что на этой прямой только желтые точки, но не могу сообразить как это сделать. Т.е. как сделать - это алгоритм Брезенхема (только его нужно доработать, когда рисовать линию и круг проверять на цвет пикселя). Но ка быстро обработать такое изображение в голове не укладывается). Кто-нибудь может подсказать как быстро пробежать по такому изображению? И еще, такой вопрос. Ну нарисую я эти линии, а как определить угол относительно оси Х или У?
  5. Выделение стеблей от фона

    Спасибо) Но видел это уже. Вот помучился тут с контурами и получил почти то, что мне нужно. Вот пару фотографий В принципе такой точности мне достаточно. Только вот теперь нужно Убрать все мелкие области. Но функция подсчета площади и вырисовывания только контуров с определенной площадью занимает очень уж много времени. Еще у меня возник такой вопрос. По какому алгоритму ищутся контуры? Это для теории нужно. Буду пытаться дальше, вдруг кому потом пригодиться что-то подобное. Кстати пока все на delphi делаю Делаю так while(current<>nil) do begin perim:=cvcontourArea(current,CV_WHOLE_SEQ); if perim<2 then begin cvDrawContours(contourImage,current,CV_RGB(255,216,0),CV_RGB(0,0,0),StrToInt(Edit7.Text),StrToInt(Edit5.Text),StrToInt(Edit6.Text),CvGetPoint(0, 0)); end; current := current.h_next; end;
  6. Выделение стеблей от фона

    Первым тогда этот попробую, если разберусь что к чему. Всеж для новичка в этом деле - это сложное занятие.
  7. Выделение стеблей от фона

    Спасибо) Почитал, но не все. Написано доступным языком,но все равно сразу то так и не вникнешь, самое знакомое - это теория вероятности и то было 4 года назад, посмотрю ваш пример. Как мне показалось сильно большой разницы нет на что именно использовать. По поводу конкретных фото - может меняться фон незначительно, ну или значительно если чернозем или после дождя (что частенько бывает). Камера должна быть установлена на тракторе, т.е. высота съемки примерно одна, но длинна стеблей (ширина слоя) может быть разной (может и не помещаться на фото, но это уже другое дело(и у нас такое редко бывает), на данный момент главное вот такие фото обработать. А там уж. ммм. Если пойду в аспирантуру.. (ну это было отступление). Как я понял хорошим примером будет http://www.compvision.ru/forum/index.php?showtopic=861&view=findpost&p=6146 эта програмка. буду пытаться понять. Надеюсь на вашу помощь))
  8. Выделение стеблей от фона

    Уважаемый, Smorodov. Вы предлагали текстурную сегментацию, а где по подробнее можно про это почитать? И что именно использовать. Если не сложно можно с примерами) И желательно на русском для начала, чтоб вникнуть? Вот нашел вашу тему про SVM классификатор. А он мне подойдет? Его очень сложно обучать и использовать? В итоге мне нужно получить координаты краев слоя, чтоб далее работать с этим слоем. Учусь не на программиста но вот что то залез в это дело. Но до этого выделяли слой перед машиной, а там фон какой угодно можно сделать, там было просто, а тут вот столкнулись с неизведанным.
  9. Выделение стеблей от фона

    Ну как вариант, но проще наверное будет установить Studio 2008 и разобраться на примерах и исходниках в том что мне нужно. Это у меня диплом. Время еще есть. Да и люди желающие помочь тут тоже есть и это обнадеживает. Да и по работе с OpenCv на си примеров куча всего чего пожелаешь. А стандартные средства длфи уж очень медленные и примеров нет по моей проблеме вот и решил opencv использовать. А так как штука она полезная да и си не помешает выучит) Тем более я php знаю а они чем то схожи . Можно будет вопросы позадавать??
  10. Выделение стеблей от фона

    Спасибо да это то я видел, по этому примеру и делал. Просто мне то нужно именно красные области.. Совсем блин сума схожу.. Лег спать просто только в 5 утра... Как раз читал robocraft про opencv
  11. Выделение стеблей от фона

    Огромное спасибо за помощь! Да я понимаю что с делфями это ужас. Я просто в СИ ноль полный))) Ну контуры я отсортировать то понял как а вот как их закрасить, т.е нужно в итоге получить закрашенные контуры по условию например >100, а те что меньше не трогать. Вот я и не вкуриваю как пройти и закрасить эту область, что в контуре. Ой блин, только щас заметил. Мнеж нужно то выделить контуром только красные пятна, а он мне все выделяет...
  12. Выделение стеблей от фона

    sourceImage, grayImage, binaryImage, contourImage: PIplImage; storage: PCvMemStorage; find_contour,dsp,current,result,h_next: PCvSeq; find_contour_num: Integer; area,perim:double; i:integer; line:cvpoint; center:CvPoint2D32f; radius:float; p:cvPoint; rr:CvRect; reader:CvSeqReader; begin sourceImage := cvLoadImage('source.bmp', CV_LOAD_IMAGE_ANYDEPTH or CV_LOAD_IMAGE_ANYCOLOR); grayImage := cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); binaryImage := cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 1); contourImage := cvCreateImage(cvGetSize(sourceImage), IPL_DEPTH_8U, 3); cvThreshold(grayImage, binaryImage, 128, 255, CV_THRESH_BINARY); cvCvtColor(SourceImage, grayImage, CV_BGR2GRAY); contourImage := cvCloneImage(sourceImage); cvCanny(grayImage, binaryImage, 50, 200, 3 ); storage := cvCreateMemStorage(0); find_contour := nil; find_contour_num := cvFindContours(binaryImage,storage,@find_contour,sizeof(CvContour),CV_RETR_LIST, CV_CHAIN_APPROX_NONE,CvGetPoint(0,0)); current:=find_contour; While(current<>nil)do begin perim:=cvcontourArea(current,CV_WHOLE_SEQ); current := current.h_next; end; cvDrawContours(contourImage,current,CV_RGB(255,216,0),CV_RGB(0,0,0),2,1,8,CvGetPoint(0, 0)); cvShowImage('windowNameContour', contourImage); cvNamedWindow('windowNameContour', CV_WINDOW_AUTOSIZE); cvShowImage('windowNameContour', contourImage); cvWaitKey(0); cvSaveImage('DSC03631c.bmp', contourImage); Пока что вот что у меня выходит. Могу только посчитать площади каждого контура
  13. Выделение стеблей от фона

    Нет у меня описано не так у меня CvSeq* contours; Как это обозначит в делфи вектором для opencv я и не знаю даже..
  14. Выделение стеблей от фона

    И так не выходит. У contours нет такого свойства, есть только total, h_next,h_prev,v_next,v_prev,first,free_bloc,storage,flags,header_size,elem_size,ptr,delta_elems. Блин ну вот засада то. Я то уж обрадовался.
  15. Выделение стеблей от фона

    Вот я и хотел сделать постобработку сначала. Вот сейчас с ней мучаюсь) Не так уж и просто, на delphi нет цикла foreach как можно по другому достать данные пикселя в контуре? И закрасить его(удалить)?
×