Позначення квадратів: знаходження декількох контурів в одному вихідному полі?


9

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

Алгоритм в основному здійснює пошук по всіх рядках на малюнку, починаючи з верхнього лівого кута, доки він не знайде піксель, який є межею. У псевдо-С ++:

int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
   if(pixels[i] == border)
   {
      start = i;
      break;
   }
} 

Коли він знаходить його, він запускає алгоритм маршируючих квадратів і знаходить контур до будь-якого об'єкта, до якого належить піксель.

Скажімо, у мене є щось подібне:

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

Де все, окрім білого кольору, є межею.

І знайшли контурні точки першої краплі:

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

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


потрібна допомога з цим , будь ласка , подивіться в цю stackoverflow.com/questions/17232672 / ...

Відповіді:


7

Чи можете ви просто стерти багатокутник, який знайшли, намалювавши його кольором фону та повторіть, поки не залишиться нічого?


1
Ось як це слід робити. Заливайте знайдений елемент фоном (або іншим кольором) і продовжуйте пошук (ви можете продовжити в точці, де ви знайшли першу "відповідність")
bummzack

Ух ти. Я навіть не знав про заливку. Дякую.
TravisG


1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.