Your SlideShare is downloading. ×
0
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Лекция 4 Обработка бинарных изображений
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Лекция 4 Обработка бинарных изображений

6,719

Published on

Обработка бинарных изображений

Обработка бинарных изображений

1 Comment
1 Like
Statistics
Notes
  • Хорошая лекция. Спасибо!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
6,719
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
38
Comments
1
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Бинарное компьютерное зрение<br />Сайт курса:<br />http://cvbeginner.blogspot.com/<br />1<br />
  • 2. Из прошлой лекции…<br />Бинаризация по порогу<br />Алгоритмы выделения краев<br />Масочные операции<br />Связанность областей<br />2<br />
  • 3. Бинарное изображение<br />3<br />
  • 4. Применения<br />Используется для оценки параметров сегментированных объектов<br />Трассировки объектов<br />В качестве маски<br />4<br />
  • 5. Логические операции<br />К бинарным изображениям применимы все операции классической логики<br />И (AND)<br />ИЛИ (OR)<br />Исключающее ИЛИ (XOR)<br />Отрицание (NOT)<br />5<br />
  • 6. Логическое ИЛИ (OR)<br />6<br />Matlab:<br /> A = B|C<br />OpenCV:<br />cv::Mat a = b|c;<br />
  • 7. Логическое И (AND)<br />7<br />Matlab:<br /> A = B&C<br />OpenCV:<br />cv::Mat a = b&c;<br />
  • 8. Исключающее ИЛИ (XOR)<br />8<br />
  • 9. Отрицание (NOT)<br />9<br />
  • 10. Маскирование<br />10<br />
  • 11. Морфологические операции<br />Стык теории множеств и интегральной геометрии<br />Имеется:<br />Некоторое множество X<br />Структурный элемент B<br />Структурный элемент определяется формой и размером<br />Операция переноса:<br />11<br />
  • 12. Эрозия<br />12<br /><ul><li>Matlab
  • 13. imeride(BW);
  • 14. OpenCV
  • 15. void erode( const Mat& src, Mat& dst, const Mat& element);</li></li></ul><li>Эрозия<br />13<br />
  • 16. Дилатация<br />14<br /><ul><li>Matlab
  • 17. imdilate (BW);
  • 18. OpenCV
  • 19. void dilate ( const Mat& src, Mat& dst, const Mat& element);</li></li></ul><li>Дилатация<br />15<br />
  • 20. Свойства Эрозии и Дилатации<br />Коммутативный закон<br />Ассоциативный закон<br />16<br />
  • 21. Открытие (Размыкание)<br />17<br /><ul><li>Matlab
  • 22. imopen (BW);
  • 23. OpenCV</li></ul>void morphologyEx( const Mat& src, Mat& dst, MORPH_OPEN, const Mat& element);<br />
  • 24. Открытие (Размыкание)<br />18<br />
  • 25. Закрытие (Замыкание)<br />19<br /><ul><li>Matlab
  • 26. imclose (BW);
  • 27. OpenCV</li></ul>void morphologyEx( const Mat& src, Mat& dst, MORPH_CLOSE, const Mat& element);<br />
  • 28. Закрытие (Замыкание)<br />20<br />
  • 29. Попадание-промах<br />21<br />
  • 30. Утончение<br />22<br />
  • 31. Построение скелета области<br />23<br />
  • 32. Алгоритм<br />Итеративное утончение<br />Пока изображение изменяется<br />Применять морфологическую операцию утончение<br />Через DT (далее)<br />Matlab<br />Skel = bwmorph(BW,'skel',Inf);<br />OpenCV<br />См. DT<br />24<br />
  • 33. Скелетонизация<br />25<br />
  • 34. Связанные области<br />26<br />
  • 35. Рекурсивный алгоритм построения связанных областей<br />void Labeling(BIT* img, int* labels)<br />{<br />// labels должна быть обнулена<br />L = 1;<br />for(y = 0; y < H; y++)<br />for(x = 0; x < W; x++)<br />{<br />Fill(img, labels, x, y, L++);<br />}<br />}<br />27<br />
  • 36. Рекурсивный алгоритм построения связанных областей<br />void Fill(BIT* img[], int* labels[], int x, int y, int L)<br />{<br />if( (labels[x][y] = = 0) && (img[x][y] = = 1) )<br />{<br />labels[x][y] = L;<br />if( x > 0 )<br />Fill(img, labels, x – 1, y, L);<br />if( x < W - 1 )<br />Fill(img, labels, x + 1, y, L);<br />if( y > 0 )<br />Fill(img, labels, x, y - 1, L);<br />if( y < H - 1 )<br />Fill(img, labels, x, y + 1, L);<br />}<br />}<br />28<br />Вопрос: В чем минусы?<br />
  • 37. Двухпроходный алгоритм<br />Если A = O<br />Ничего не делать<br />Иначе если B=0и C=0<br /> Увеличить счетчик областей и присвоить его значение A<br />Иначе если B xor C = 1<br /> Копировать значение в A<br />Иначе если B!=0 и C!=0<br />Если B = C<br />Копировать значение в A<br />Иначе<br /> Записать значение B или C в A; зафиксировать эквивалентность B и С<br />29<br />
  • 38. Что делать?<br />30<br />
  • 39. Пример маркировки<br />31<br />
  • 40. Пример маркировки<br />32<br />
  • 41. Реализация<br />Matlab<br />L = bwlabel(BW); <br />RGB = label2rgb(L);<br />OpenCV<br />void findContours( const Mat& image, vector<vector<Point> >& contours,vector<Vec4i>& hierarchy, CV_RETR CCOMP, CV_CHAIN_APPROX_NONE);<br />void drawContours( Mat& image, const vector<vector<Point> >& contours,intcontourIdx, const Scalar& color, CV_FILLED);<br />33<br />
  • 42. Дерево связанных областей<br />34<br />
  • 43. Пример трассировка животных<br />35<br />
  • 44. Перерыв<br />Вопросы?<br />36<br />
  • 45. Distance transform (DT)<br />Определение расстояния до ближайшего «белого пикселя»<br />37<br />"2D Euclidean distance transforms: a comparative survey", ACM Computing Surveys, Vol 40, Issue 1, Feb 2008<br />
  • 46. Алгоритм (DT)<br />Простейший алгоритм – N проходов<br />Первый проход помечает края 0<br />На втором помечаем все граничащие с 0 пикселикак 1<br />И т.д.<br />Существует двухпроходный алгоритм<br />38<br />
  • 47. Distance transform иллюстрация<br />39<br />L2<br />L1<br />~L2<br />L0<br />
  • 48. Реализация<br />Matlab<br />bwdist(~BW,'euclidean')<br />bwdist(~ BW,'cityblock')<br />bwdist(~ BW,'chessboard')<br />bwdist(~ BW,'quasi-euclidean')<br />OpenCV<br />void distanceTransform( const Mat& src, Mat& dst, intdistanceType, intmaskSize );<br />40<br />
  • 49. Описание бинарных компонент<br />Для сравнения между собой или с шаблоном<br />Требования к описанию:<br />Инвариантность относительно размера<br />Инвариантность относительно поворота<br />Инвариантность относительно сдвига<br />41<br />
  • 50. Определение центра масс<br />42<br />Площадь<br />Центр масс<br />
  • 51. Определение осей и их направления<br />43<br />Собственными векторами матрицы covбудут направления полуосей осей эллипса<br />Собственными числами – длины полуосей<br />
  • 52. Моменты пример<br />44<br />OpenCV<br />Moments cv::moments(const Mat& array, boolbinaryImage=false );<br />
  • 53. Моменты Hu<br />45<br />OpenCV<br /> void HuMoments( const Moments& moments, double h[7] );<br />
  • 54. Нахождение контура <br />Внутренний контур<br />Внешний контур<br />46<br />
  • 55. Описание контура <br />Код последовательности (Freeman)<br />47<br />
  • 56. Описание контура <br />Распределение расстояния до цента<br />48<br />
  • 57. Сравнение контуров<br />OpenCV<br />double matchShapes( const Mat& object1,const Mat& object2,int method, double parameter=0 );<br />49<br />
  • 58. Граф Риба<br />50<br />
  • 59. Недостатки графа Риба<br />51<br />
  • 60. Рибvs Skeleton<br />Reed<br />Плюсы<br />Просто строится<br />Мало лишних деталей<br />Содержит ключевые точки<br />Минусы<br />Зависит от функции Морса<br />Нет инвариантности относительно поворота<br />Skeleton<br />Плюсы<br />Инвариантен относительно поворота<br />Однозначно<br />Минусы<br />Сложное вычисление<br />Много лишних деталей<br />52<br />
  • 61. Пример использования<br />OpenNI + NITE<br />http://vimeo.com/17640133<br />53<br />
  • 62. Сегментация по выпуклым областям<br />Определение выпуклости<br />Для любой пары точек в множестве отрезок между этими точками лежит в этом множестве<br />Приблизительная выпуклость<br />Отклонение от прямой наикратчайшего расстояния между точками в множестве<br />54<br />
  • 63. Приблизительная выпуклость<br />55<br />
  • 64. Сегментация по выпуклым областям<br />Пример<br />56<br />Liu et al. Convex Shape Decomposition CVPR 2010<br />
  • 65. Сегментация по выпуклым областям<br />Compute multiple Morse functions;<br />for each Morse function do<br />Construct Reeb Graph;<br />Compute Mutex pairs and add them into MutexSet;<br />Compute candidate cuts and add them intoCandidate Cut Set;<br />end<br />for each cut in Candidate Cut Set do<br />for and each mutex pair in Mutex Set do<br />Check whether the cut satisfy the mutex pair<br />end<br />end<br />4. Solve the linear programming problem<br />5. Obtain final cuts;<br />57<br />
  • 66. Сравнение описаний<br />58<br />
  • 67. Вопросы<br />59<br />

×