Как да открием линия в изображението с малко шум?

Бих искал да помоля за съвет - какъв алгоритъм да използвам за автоматично откриване на линия на изображението?

Преди: (от http://tinyurl.com/l6d5x9s)

Преди обработка

Искам да постигна такъв резултат (от http://tinyurl.com/pnfaphv):

След обработка

Благодаря ви предварително за всяка помощ!


person user3052757    schedule 11.06.2014    source източник
comment
Това не е малък шум...това е JPEG артефактиран, сол и черен пипер и нещо, което изглежда като нормален Гаусов шум навсякъде. Пробвал ли си филтър за размазване+ръбове?   -  person nneonneo    schedule 11.06.2014
comment
пробвах houghtransform и резултатът (i.stack.imgur.com/wZkwn.jpg ). може би трябва да публикувате повече изображения, които като група са по-представителни за проблема, който искате да разрешите.   -  person Zaw Lin    schedule 11.06.2014
comment
Всъщност се опитах да внедря houghtransform, но не е толкова лесно, колкото очаквах. Има пример за по-голямо изображение с този ред -› i.imgur.com/RYKxm8n.png Малко е извита. Ще бъде ли houghtransform достатъчен за това? Опитах и ​​някои филтри и т.н., но не работи.   -  person user3052757    schedule 12.06.2014
comment
можете ли да нарисувате какъв е желаният резултат? Опитах houghtransform, който използвах в lpr сценарий от (stackoverflow.com/questions/24046089/) и откри линията на челюстта. чувствам обаче, че може би не може да работи общо. можете ли да опитате (ipol.im/pub/art/2012/gjmr-lsd)? това е, което получавам (i.stack.imgur.com/W4pam.jpg) . тогава трябва да свържете линиите, които са близо една до друга и имат сходни ъгли, за да получите дълга крива. може би може да работи   -  person Zaw Lin    schedule 13.06.2014
comment
ако това не работи .. може би можете да опитате подход, базиран на класификация, ако интензитетът на кривата, която искате да откриете, има подобен диапазон. един от колегите ми използва невронна мрежа за сегментиране на зъбите и работи добре. можете да използвате заобикалящото изображение и/или характеристиките на ръба от първи ред като вход   -  person Zaw Lin    schedule 13.06.2014
comment
намерих малко свързана литература @ (mobimgproc.googlecode.com/svn-history /r11/trunk/MSthesis.pdf)   -  person Zaw Lin    schedule 13.06.2014
comment
Желаният резултат трябва да изглежда така: i.imgur.com/RRD3rXD.png. Освен това, първата стъпка на програмата ще бъде да маркирате две крайни точки (зелени пиони) на тази линия чрез просто щракване на мишката - това ще помогне много. По принцип направих houghtransform на това изображение i.imgur.com/RYKxm8n.png и резултата е i.imgur.com/LNAfcqc.png. Точката с най-голяма крива-crosind е (487,237), а линейната функция е y=-0,65-580,68 и изглежда така wolframalpha.com/input/?i=y%3D-0.65x-580.68, така че е доста подобно на желаното изображение. Но какво следва? Как мога да начертая тази линия на това изображение?   -  person user3052757    schedule 13.06.2014
comment
ако приемем, че центърът на изображението се третира като начало, ако вече имате уравнението на линията, трябва да разгледате два случая: 1) линията е вертикална, тогава уравнението на линията е x=rho и трябва да свържете двете точки (rho+w/2 ,0),(rho+w/2,h) 2) линията не е вертикална, тогава трябва да намерите пресечните точки на лявата и дясната граница и линията и да ги свържете, използвайте x=0 и x=w, за да решите y и ги свържете.   -  person Zaw Lin    schedule 13.06.2014
comment
за java код можете да се обърнете към това (developpez.net/forums/d495285/autres-langages/algorithmes/). тъй като сайтът изисква регистрация, аз ги качих някъде тук (datafilehost.com/d/be981c93 ). както компилиран jar файл, така и източници, изтеглени от сайта   -  person Zaw Lin    schedule 13.06.2014
comment
Бихте ли могли да качите тази литература (mobimgproc.googlecode.com/svn-history/ r11/trunk/MSthesis.pdf) на външен сървър? Не мога да го изтегля. Изглежда, че преобразуването на Hough няма да помогне с откриването на този ред. Мислех за класификация въз основа на интензитета на пикселите на кривата, но когато увеличим мащаба на тази крива, стойностите на пикселите ще бъдат неточни и мисля, че алгоритъмът може да отиде в грешна посока. Може би втори параметър за сравнение, напр. разстоянието между две точки, маркирани с щракване на мишката, свързано със сравняването на стойността на пиксела, ще помогне ли да се постигне откриване на крива? Каква зависимост трябва да има между тях?   -  person user3052757    schedule 14.06.2014
comment
datafilehost.com/d/6aa8476a друго нещо, което можете да опитате, е подход, базиран на активен контур. повечето от тях изискват ръчна инициализация и работят доста бавно. но изглежда, че те няма да са проблем за вас.   -  person Zaw Lin    schedule 14.06.2014


Отговори (2)


Най-лесното решение би било да погледнете трансформацията на Hough. Ако имате разумно права линия, използвайте линеен метод. Ако се очаква вашата линия да бъде извита, използвайте кръгов метод с големи радиуси.

Трансформацията на Hough всъщност няма да идентифицира пикселите в линията. Той просто ще ви даде позицията и ъгъла на линията. Той също така ще ви даде дебелината, ако определите прага на резултата и измерите размера на точката. Обикновено правите това така или иначе, като използвате центроида, за да намерите действителния център на линията.

person paddy    schedule 11.06.2014

Гаусово замъгляване, след това адаптивно определяне на прага и използване на хитър ръб. Може да свърши работа

person Pruthvi P    schedule 11.06.2014