*   >> Lezen Onderwijs artikelen >> science >> programming

Filteren Connected Components

nerieke zullen we de functie pointers gebruiken. Het idee is om een ​​contour te leggen aan een functie die criteria aanvaardt of verwerpt een contour. Als de contour wordt afgewezen dan verwijderen we het van onze lijst met contouren. Uiteindelijk wordt alleen toegestaan ​​contouren blijven en we terug. U kunt hier meer informatie over de functie pointers. Het prototype van de criteria functie zal zijn: int criteria (CvSeq * contour);

Codering het voorbeeld: filtering en het extraheren van de aangesloten componenten

Nu zullen we de functie die het werk doen coderen .

Ik zal de code van de functie berichten hieronder hier de volledige werkende code is beschikbaar op het einde van het artikel.

  CvSeq * extract_and_filter_CC (IplImage * img, int (* criteria ) (CvSeq *)) {


CvSeq * contouren, * ptr; CvMemStorage * mem = cvCreateMemStorage

(0);

cvFindContours (img, mem, en contouren, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint (0,0)); ptr = contouren; while (ptr = NULL!) {if (criteria (PTR) == 0) {if (ptr == contouren) {contouren = ptr-> h_next; ptr = contouren; ptr-> h_prev = NULL; } Else {ptr-> h_prev-> h_next = ptr-> h_next; if (ptr-> h_next = NULL!) ptr-> h_next-> h_prev = ptr-> h_prev; ptr = ptr-> h_next; }} Else {ptr = ptr-> h_next;

}} terug contouren; }

Een voorbeeld van het gebruik In dit voorbeeld zal ik een eenvoudige functie die componenten filtert op basis van hun verhouding te tonen , krijgen alleen aangesloten componenten die bijna vierkant.


  int vierkant (CvSeq * contour) {CvRect doos = cvBoundingBox (contour); if (box-> w /box-> hw /box-> h> 0,4) return 1; 0 keren;} 


We noemen de extract_and_filter_CC functie als dit: filtered_cc = extract_and_filter_CC (IMG, vierkant);

Conclusie Dit artikel beschrijft een andere toepassing van de aangesloten componenten: om delen van het beeld die niet passen in een bepaalde criteria filteren. Het gebruikt ook functieverwijzingen van de filters zo algemeen mogelijk.

Deze techniek is zeer krachtig en kan worden gebruikt in combinatie met andere technieken om ruis een afbeelding te verwijderen of bijzondere delen van het beeld te extraheren. De volledige werkende code met commentaar is hier beschikbaar.

Page   <<  [1] [2] 
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.