• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Лекция 4 Обработка бинарных изображений
 

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

on

  • 6,192 views

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

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

Statistics

Views

Total Views
6,192
Views on SlideShare
4,218
Embed Views
1,974

Actions

Likes
0
Downloads
31
Comments
1

9 Embeds 1,974

http://cvbeginner.blogspot.com 1233
http://cvbeginner.blogspot.ru 686
http://cvbeginner.blogspot.de 33
http://cvbeginner.blogspot.co.il 11
http://cvbeginner.blogspot.fr 5
http://cvbeginner.blogspot.co.uk 2
http://cvbeginner.blogspot.kr 2
http://cvbeginner.blogspot.ca 1
http://cvbeginner.blogspot.cz 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Хорошая лекция. Спасибо!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

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