откриване на линии с нисък контраст на шумни снимки

Опитвам се да открия линии с нисък контраст на снимки на екран или изображения с шум като цяло. Изглежда се натъквам на два проблема:

  1. Не мога надеждно да открия линията с адаптивен праг или алгоритъм за откриване на ръбове поради шума/тъмната мрежа на екрана. Изглежда, че Blur помага малко, но не достатъчно, за да го накарам да работи.

  2. Когато се виждат само няколко сегмента от една и съща линия (поради шум, светлинни условия или други), бих искал да свържа откритите сегменти от линия към една права линия.

     img = cv2.imread("test.jpg")
     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
     gray=cv2.GaussianBlur(gray,(9,9),0)
     bin = cv2.adaptiveThreshold(gray2, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 33, 3)
     cv2.namedWindow('Test')
     cv2.imshow("Test", bin)
    

Също така експериментирах с cv2.Canny и cv2.HoughLinesP, но без добри резултати, тъй като тъмната решетка обърква и двете. Благодаря предварително!

РЕДАКТИРАНЕ: Предполагам, че локална версия на праговата функция с THRESH_TRUNCATED или THRESH_TOZERO може да помогне... филтриране на мрежата. и с висок контраст

Тъй като нямам репутацията да публикувам снимки, добавих връзките. Изображение с линия с нисък контраст:

въведете описание на изображението тук

Открита линия:

въведете описание на изображението тук


person gspoosi    schedule 06.06.2013    source източник
comment
Бихте ли могли да редактирате въпроса си и да включите примерно изображение?   -  person Bull    schedule 06.06.2013
comment
Нямам представител, но ги качих някъде другаде и добавих връзките.   -  person gspoosi    schedule 07.06.2013


Отговори (1)


Изпълнението на медианен филтър на достатъчно голям прозорец (да речем 11x11) и след това изваждането на средния (или малко по-малък от средния) интензитет на изображението ще направи линията по-лесна за откриване.

person Boyko Perfanov    schedule 07.06.2013
comment
имаш предвид глобалната средна стойност или средната стойност на прозореца 11X11? - person gspoosi; 10.06.2013
comment
има ли лесни начини за изваждане и задаване на всички отрицателни на нула? Моят for цикъл е много бавен :S Двустранно филтриране след слаб MedianFilter работи за филтриране на решетката на LCD екрана. - person gspoosi; 10.06.2013
comment
Не, мога да отделя сладкото си време :) - person gspoosi; 11.06.2013