Втор колоквиум part 1 Flashcards

1
Q

Што означува Otsu’s binarization?

A

Да речеме дека имаме bimodal слика (хистограмот на сликата е со два пика). На таа слика може да ја земеме средината на двата пика поединечно како thresh value. Тоа е бинаризацијата на Otsu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Како се реализира Otsu’s binarization in opencv?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Колку параметри враќа threshold-от со Otsu методот?

A

два параметри: retValue, thresh

retValue: оптималната threshold вредност (доколку не се користел Otsu’s method, retValue == threshold value)
thresh: threshold-ираната слика

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Кога е погодно да се користи locally adaptive thresholding?

A

Кога во сликите имаат различни осветлувања во некои области, т.е. изразени контури.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Што прави алгоритмот на locally adaptive thresholding?

A

Алгоритмот пресметува thresholding на мали региони во сликата. Во овој случај добиваме различни thresholds за различни региони на сликата

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Колку влезни и излезни параметри има cv2.adaptiveThreshold()?

A

Влезни = 6

arg1 = source img
arg2 = max вредност на threshold
arg3 = cv2. ADAPTIVE_THRESH_MEAN_C / cv2. ADAPTIVE_THRESH_GAUSSIAN_C
arg4 = обична threshold вредност
arg5 = големината на соседството [прозорецот]
arg6 = constant
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Кои се двата основни морфолошки оператори?

A

Erosion and Dilation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Кои се варијациите на ерозија и дилатација

A

Opening, Closing, Gradient

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Што претставува ерозија а што дилатација?

A

Ерозија ги намалува објектите а ја зголемува позадината.

Дилатација ги зголемува објектите а ја намалува позадината.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Како функционира алгоритмот на ерозија?

A

Кернелот се лизга низ сликата, Пиксел во оригиналната слика ќе се смета за 1 ако сите пиксели под кернелот се 1. Инаку сликата е eroded, т.е. пикселите се земаат како 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Која opencv функција ја користеме за да направеме ерозија?

A

cv2.erode(img, kernel, iterations = x)

каде што претходно креираме kernel со големина по наша желба

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Како функционира алгоритмот на дилатација?

A

Кернелот се лизга низ сликата. Пикселот во сликата е 1 доколку барем 1 пиксел под кернелот е 1.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Која opencv функција ја користеме за да направеме дилатација?

A

cv2.dilation(img, kernel, iterations = x)

каде што претходно креираме kernel со големина по наша желба

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Што се случува ако искористеме заедно и ерозија и дилатација?

A

Се отстранува шум. Процесот е, ерозијата ги остранува белите шумови. Но, бидејќи истовремено го намалува и објектот, користеме на крај дилатација.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

На колку начини може да се креира kernel и кои се тие?

A

2 начини:

1) np.ones((5,5), np.uint8)
2) cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5))

//наместо MORPH_ELIPSE може да имаме и MORPH_RECT, или MORPH_CROSS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Како може да направеме edge detection со помош на ерозија и дилатација?

A

Edge1 = dilated - original
Edge2 = original - eroded
Edge1 + Edge2 = stronger edges

17
Q

За што се користат функциите Opening and Closing?

A

Opening: erosion followed by dilation;
служи за отстранување на шум.
cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

Closing: dilation followed by erosion;
отстранување на мали дупки внатре во
објектот.
cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

18
Q

Како може да се направи edge detection со помош на opening and closing?

A

Со употребување на функцијата:

cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

19
Q

TIP: за подобра прегледност пред ја почнеме да наоѓаме контури на сликата, прво треба да направеме threshold.

20
Q

Со која функција во opencv наоѓаме контури ?

A

cv2.findContours(), но прво мора да ја конвертираме сликата во grayscale.

21
Q

Кои се влезните а кои се излезните аргументи на cv2.findContours()?

A

Влезни - 3

arg1 : source image
arg2 : contour retrieval mode
arg3 : contour approximation method

Излезни - 3 - image, contours and hierarchy
contours е Python листа од сите контури во сликата. Секоја контура е Numpy array од (x,y) од граничните точки на објектот

22
Q

Со која функција во opencv цртаме контури ?

A

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
23
Q

Кои вредности може да ги има параметарот contour approximation method?

A

чува (x,y) координати од границата на обликот.

cv2. CHAIN_APPROX_NONE : сите точки од границата се зачувани
cv2. CHAIN_APPROX_SIMPLE: ги отстранува сите редундантни точки т.е. прави компресија

24
Q

Што претставува convexity defect?

A

Секоја промена на hull од објектот

25
Што претставува Convex Hull?
cv2. convexHull() проверува крива за convexity defects, и истата ја корегира. * convex кривата е секогаш испакната. Доколку истата е вдлабната, тогаш имаме некаков дефект.*
26
Кои се влезни параметри на cv2.convexHull()?
Влезни аргументи arg1 - contours [контурите што ги вметнуваме] arg2 - returnPoints = True/Flase [False користеме ако сакаме да најдеме convexity defects]
27
Кои се влезните а кои се излезните параметри на cv2.convexityDefects()?
Влезни аргументи arg1 - contours arg2 - convex hull Излезни аргументи: низа - [ start point, end point, farthest point, approximate distance to farthest point ]
28
За што се користи функцијата cv2.contourArea()?
За да се најде плоштината на контурата.
29
Со која равенка може да ја извлечеме само контурата без исполнетоста внатре?
0.05 < area / float(img_area) < 0.8
30
Што прави sys.maxsize
maxsize атрибутот ја враќа низата/листата со најголема должина.
31
Што прави функцијата cv2.matchShapes()?
Се споредуваат две фигури или две контури. Колку е помала вредноста на излезниот параметар толку се послични двете фигури/контури
32
Кои се влезните аргументи на функцијата cv2.matchShapes()?
arg1 : source contour/image arg2 : another source contour/image arg3 : 1 arg4 : 0.0
33
Што е функцијата на contour approximation?
апроксимира една фигура во друга со помал број на точки.
34
Што користиме за да апроксимираме некоја фигура?
``` epsilon = 0.1 * cv2.arcLength() //arc length го дава периметарот на контурата //ако вториот параметар на arc length == True тогаш //контурата е затворена ``` ``` cv2.approxPolyDP(contour, epsilon, True) // оваа функција се користи за апроксимацијата со // помалку точки; true == контурата е затворена ```
35
Што е функцијата на measure.label
ги зема во една низа сите региони кои што имаат иста вредност на пикселите. Обично се употребува за детекција на светли бели региони.
36
Одредување на правоаголник за некоја контура?
cv2.boundingRect() 1 влезен аргумент : contour 4 излезни аргументи : x,y,w,h // (x,y) - top-left coordinate од правоаголникот // (w,h) - висина и ширина на правоаголникот cv2.rectangle(img, (x,y), (x+w,y+h), color, thickness)
37
Одредување на круг за некоја контура?
cv2.minEnclosingCircle() 1 влезен аргумент : contour 2 излезни аргументи : (cX, cY) [центар] и radius cv2.circle(image, (int(cX), int(cY)), int(radius),color, thicknes)
38
Одредување на елипса за некоја контура?
cv2.fitEllipse() 1 влезен аргумент : contour 1 излезен аргумент cv2.ellipse(img,ellipse,color, thickness)