Втор колоквиум 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.

A

//

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
Q

Што претставува Convex Hull?

A

cv2. convexHull() проверува крива за convexity defects, и истата ја корегира.
* convex кривата е секогаш испакната. Доколку истата е вдлабната, тогаш имаме некаков дефект.*

26
Q

Кои се влезни параметри на cv2.convexHull()?

A

Влезни аргументи

arg1 - contours [контурите што ги вметнуваме]
arg2 - returnPoints = True/Flase [False користеме ако сакаме да најдеме convexity defects]

27
Q

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

A

Влезни аргументи

arg1 - contours
arg2 - convex hull

Излезни аргументи:

низа - [ start point, end point, farthest point, approximate distance to farthest point ]

28
Q

За што се користи функцијата cv2.contourArea()?

A

За да се најде плоштината на контурата.

29
Q

Со која равенка може да ја извлечеме само контурата без исполнетоста внатре?

A

0.05 < area / float(img_area) < 0.8

30
Q

Што прави sys.maxsize

A

maxsize атрибутот ја враќа низата/листата со најголема должина.

31
Q

Што прави функцијата cv2.matchShapes()?

A

Се споредуваат две фигури или две контури. Колку е помала вредноста на излезниот параметар толку се послични двете фигури/контури

32
Q

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

A

arg1 : source contour/image
arg2 : another source contour/image
arg3 : 1
arg4 : 0.0

33
Q

Што е функцијата на contour approximation?

A

апроксимира една фигура во друга со помал број на точки.

34
Q

Што користиме за да апроксимираме некоја фигура?

A
epsilon = 0.1 * cv2.arcLength() 
//arc length го дава периметарот на контурата
//ако вториот параметар на arc length == True тогаш
//контурата е затворена
cv2.approxPolyDP(contour, epsilon, True) 
// оваа функција се користи за апроксимацијата со
// помалку точки; true == контурата е затворена
35
Q

Што е функцијата на measure.label

A

ги зема во една низа сите региони кои што имаат иста вредност на пикселите. Обично се употребува за детекција на светли бели региони.

36
Q

Одредување на правоаголник за некоја контура?

A

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
Q

Одредување на круг за некоја контура?

A

cv2.minEnclosingCircle()

1 влезен аргумент : contour
2 излезни аргументи : (cX, cY) [центар] и radius

cv2.circle(image, (int(cX), int(cY)), int(radius),color, thicknes)

38
Q

Одредување на елипса за некоја контура?

A

cv2.fitEllipse()

1 влезен аргумент : contour
1 излезен аргумент

cv2.ellipse(img,ellipse,color, thickness)