Втор колоквиум part 1 Flashcards
Што означува Otsu’s binarization?
Да речеме дека имаме bimodal слика (хистограмот на сликата е со два пика). На таа слика може да ја земеме средината на двата пика поединечно како thresh value. Тоа е бинаризацијата на Otsu.
Како се реализира Otsu’s binarization in opencv?
cv2.threshold(img, 0, 255, cv2.THRESH_BINARY/../.. + cv2.THRESH_OTSU).
arg1: source image
arg2: threshold value e секогаш 0
arg3: било која вредност е соодветна според нас
arg4: обичен threshold + Otsu’s threshold
Колку параметри враќа threshold-от со Otsu методот?
два параметри: retValue, thresh
retValue: оптималната threshold вредност (доколку не се користел Otsu’s method, retValue == threshold value)
thresh: threshold-ираната слика
Кога е погодно да се користи locally adaptive thresholding?
Кога во сликите имаат различни осветлувања во некои области, т.е. изразени контури.
Што прави алгоритмот на locally adaptive thresholding?
Алгоритмот пресметува thresholding на мали региони во сликата. Во овој случај добиваме различни thresholds за различни региони на сликата
Колку влезни и излезни параметри има cv2.adaptiveThreshold()?
Влезни = 6
arg1 = source img arg2 = max вредност на threshold arg3 = cv2. ADAPTIVE_THRESH_MEAN_C / cv2. ADAPTIVE_THRESH_GAUSSIAN_C arg4 = обична threshold вредност arg5 = големината на соседството [прозорецот] arg6 = constant
Кои се двата основни морфолошки оператори?
Erosion and Dilation
Кои се варијациите на ерозија и дилатација
Opening, Closing, Gradient
Што претставува ерозија а што дилатација?
Ерозија ги намалува објектите а ја зголемува позадината.
Дилатација ги зголемува објектите а ја намалува позадината.
Како функционира алгоритмот на ерозија?
Кернелот се лизга низ сликата, Пиксел во оригиналната слика ќе се смета за 1 ако сите пиксели под кернелот се 1. Инаку сликата е eroded, т.е. пикселите се земаат како 0.
Која opencv функција ја користеме за да направеме ерозија?
cv2.erode(img, kernel, iterations = x)
каде што претходно креираме kernel со големина по наша желба
Како функционира алгоритмот на дилатација?
Кернелот се лизга низ сликата. Пикселот во сликата е 1 доколку барем 1 пиксел под кернелот е 1.
Која opencv функција ја користеме за да направеме дилатација?
cv2.dilation(img, kernel, iterations = x)
каде што претходно креираме kernel со големина по наша желба
Што се случува ако искористеме заедно и ерозија и дилатација?
Се отстранува шум. Процесот е, ерозијата ги остранува белите шумови. Но, бидејќи истовремено го намалува и објектот, користеме на крај дилатација.
На колку начини може да се креира kernel и кои се тие?
2 начини:
1) np.ones((5,5), np.uint8)
2) cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))
//наместо MORPH_ELIPSE може да имаме и MORPH_RECT, или MORPH_CROSS
Како може да направеме edge detection со помош на ерозија и дилатација?
Edge1 = dilated - original
Edge2 = original - eroded
Edge1 + Edge2 = stronger edges
За што се користат функциите Opening and Closing?
Opening: erosion followed by dilation;
служи за отстранување на шум.
cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
Closing: dilation followed by erosion;
отстранување на мали дупки внатре во
објектот.
cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
Како може да се направи edge detection со помош на opening and closing?
Со употребување на функцијата:
cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
TIP: за подобра прегледност пред ја почнеме да наоѓаме контури на сликата, прво треба да направеме threshold.
//
Со која функција во opencv наоѓаме контури ?
cv2.findContours(), но прво мора да ја конвертираме сликата во grayscale.
Кои се влезните а кои се излезните аргументи на cv2.findContours()?
Влезни - 3
arg1 : source image
arg2 : contour retrieval mode
arg3 : contour approximation method
Излезни - 3 - image, contours and hierarchy
contours е Python листа од сите контури во сликата. Секоја контура е Numpy array од (x,y) од граничните точки на објектот
Со која функција во opencv цртаме контури ?
cv2.drawContours()
arg1 : source image arg2 : contours arg3 : index of contours. If we want to draw all of the contours we say -1 arg4: color arg5: thickness
Кои вредности може да ги има параметарот contour approximation method?
чува (x,y) координати од границата на обликот.
cv2. CHAIN_APPROX_NONE : сите точки од границата се зачувани
cv2. CHAIN_APPROX_SIMPLE: ги отстранува сите редундантни точки т.е. прави компресија
Што претставува convexity defect?
Секоја промена на hull од објектот