2011-01-10 17 views
8

Potrzebuję przyciąć okrąg w MATLAB.MATLAB: jak wycinam krąg z obrazu

Potrzebuję wykonać segmentację tęczówki, a ja zidentyfikowałem punkt środkowy i promień tęczówki, i muszę go odciąć od obrazu.

Mam wektor ci, że ci (1) jest współrzędną X ci (2) jest współrzędną Y, a ci (3) jest promieniem koła.

Odpowiedz

10

Jednym ze sposobów jest stworzenie binarnej maski z tymi wewnątrz kręgu i zera na zewnątrz. Następnie możesz użyć tej tablicy do zamaskowania wszystkiego poza kołem za pomocą NaN lub do odczytania wartości pikseli obrazu wewnątrz maski.

Aby utworzyć maskę okrąg, łatwym sposobem jest stworzenie macierzy współrzędnych koncentruje się na tęczówce, a próg dystans, tak:

[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = (xx.^2 + yy.^2)<ci(3)^2; 
+0

Tam idzie moja odpowiedź ... =) bardzo ładne. +1. Aby posegmentować obraz, pomnóż go za pomocą maski. Niech na zewnątrz będą zera. – Marnix

+0

@Marnix: Przepraszam :). W każdym razie sugeruję umieszczenie NaN na zewnątrz, takich jak 'image (~ mask) = NaN;', więc autoskalowanie w 'imshow (image, [])' nie zostanie odrzucone przez wszystkie zera w obrazie. – Jonas

+0

Mam ten błąd: ??? Niezdefiniowana funkcja lub metoda 'sqrt' dla argumentów wejściowych typu 'logical'. w tej linii maska ​​= sqrt ((xx.^2 + yy.^2)

Powiązane problemy