Виявлення поверхні


9

Як один сегмент має велику площу сірого (від білого до чорного) від зображення? (Якщо ви знаєте це в opencv, ви можете відповісти, сказавши, що б ви робили в opencv). Наприклад, дана фотографія:

введіть тут опис зображення

Ви бачите, що це велика ділянка сірого кольору, і це чітко відрізняється від решти. Як ви можете сегментувати це, якщо ця зона може мати відтінок сірого і вона повинна працювати в режимі реального часу.

Thx заздалегідь.


Я бачу декілька сірих ділянок, які чітко відрізняються. Чи можете ви показати бажаний результат?
Доктор Белісарій

мій бажаний результат - координати верхнього правого та лівого кутів та координати лівого нижнього кута середнього сірого прямокутника
Olivier_s_j

Чи можете ви сказати нам що-небудь ще про навколишнє середовище та потенційну дисперсію зображень, які вам потрібно буде обробити? Чи завжди ціль буде біля середини зображення? Чи будуть присутні інші сірі прямокутники, можливо того ж розміру? Що робити, якщо вони виявляться таким же відтінком сірого? Чи є інші речі, які ми могли б використати для його ідентифікації? Чи завжди вона матиме малу форму "T" вгорі?
justis

Привіт, ціль завжди не має бути біля середини зображення. Ціль завжди буде якийсь прямокутник. (Це також може бути просто стіна). Якщо є кілька прямокутників, їх також слід виявити, але вони повинні бути великими. Невеликі площі можна відкинути. Якщо всі вони виявляться однаковими сірими, їх слід виявити, але шанс, що це станеться, дуже малий. Єдине справжнє властивість, яке можна виявити, - це те, що поверхня матиме однакову сіру (більш-менш) по всій поверхні і що це прямокутник. Кожен раз не буде маленької вершини форми Т
Olivier_s_j

Відповіді:


9

Ви отримаєте розумну сегментацію сірої області за допомогою алгоритму водорозтоку або розрізів графіків. Вододільний посуд доступний у opencv, але скорочення графіків ще немає. (BTW Це карта глибини від Kinect?)


1
Функція вододілу у opencv вимагала 8-бітового 3-канального зображення в якості входу. Моя карта глибини - це 8-бітове зображення. Будь-яка ідея, як це вирішити?
Olivier_s_j

/ * отримати властивості зображення / width = src-> width; висота = src-> висота; / створити нове зображення для версії сірого * / IplImage * dst = cvCreateImage (cvSize (ширина, висота), IPL_DEPTH_8U, 1); cvCvtColor (src, dst, CV_RGB2GRAY);
nav

Ще одне питання, я щойно отримав функцію вододілу, що працює в іншому зображенні (лише приклад з opencv). Але вони починаються з кольорового зображення та бінарного зображення. У мене є лише 1 зображення ... зображення великого розміру. Будь-яке уявлення про те, якою має бути маска (друга вхідна змінна)?
Olivier_s_j

4

У Mathematica ви можете зробити щось на кшталт:

Colorize[MorphologicalComponents[
  ColorNegate@
   Erosion[Dilation[
     DeleteSmallComponents[
      Erosion[Binarize[
        GradientFilter[
         ColorConvert[Import@"http://i.stack.imgur.com/XdnaW.png", 
          "RGB"], 2], .015], 1], 100], 2], 2]], 
 ColorFunction -> "ThermometerColors"]

введіть тут опис зображення

Можливо, ви можете перевести цей код у будь-яку вікно обробки зображень.


Привіт, добре виглядає. Але я не маю математики. Але я здогадуюсь, що ви використовували порогове значення на основі відтінків сірого на цій фотографії? Можливо, ви могли б дати трохи інформації зі своїм кодом? Thx
Olivier_s_j

1
@Ojt Для кожної команди ви можете прочитати " reference.wolfram.com/mathematica/ref/xxx.html " для опису. Наприклад reference.wolfram.com/mathematica/ref/…
д-р belisarius

Гаразд, я зробив, як ви запропонували. Але, здається, ви використовуєте Binarize для порогового значення заданого значення. Що в моєму випадку неможливо. Оскільки великі райони можуть мати різні відтінки сірого. (Наприклад, середня поверхня може бути дуже світлою). І тоді поріг не працював би.
Olivier_s_j
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.