Research Article

Region-Based Segmentation and Wiener Pilot-Based Novel Amoeba Denoising Scheme for CT Imaging

LabelCount =0    ; //Initialize Label counter.
EquivalenceTable = []   ; //Initialize equivalence table of labels
For  u =1:U    ; //Raster scan the window (iteratively scan one row at a time)
  For v =1:V    ; //iteratively scan pixels in each column of the selected row)
  If Ip(u,v)! =0  ; //If the pixel is NOT background (i.e., 0)
    Neighbors = [Label(u,v-1), Label(u-1,v)]; //Get neighbor labels (one pixel above, and one on left/prior)
      ; //Note: neighbors for 8-connected mask include pixels to the
    ; //top-right, top, top-left and left of the pixel(u,v)
  If Neighbors = [ ]   ; //If no neighbor pixel is labeled
 Label(u,v) = LabelCount+1 ; //uniquely label the pixel
 LabelCount = LabelCount+1 ; //increment label counter
  End If
Else Label(u,v) = min (Neighbors) ; label the current pixel as the neighbor with the smallest label
  If [length(Neighbors) = = 2] && [Neighbors(1) != Neighbors(2)]
  EquivalenceTable = [EquivalenceTable, ((min(Neighbors), max(Neighbors))]
; //Record equivalencies of neighbor labels (Mx2 matrix)
    End If
   End If
Neighbors = [ ]    ; //Reset neighbor pointer.
  End For
End For
; Second Pass: Relabeling equivalencies
Sort (EquivalenceTable, 1)   ; //Sort the Equivalence Table based on first column
EqualityCount = rows(EquivalenceTable) ; //Total equivalencies = number of rows in Table
Do
 L1 = EquivalenceTable (EqualityCount,1) ; //Smaller label in selected Equivalence Table entry
 L2 = EquivalenceTable (EqualityCount,2) ; //Larger label in selected Equivalence Table entry
 Labels(find(Labels = = L2)) = L1  ; //Relabel all instances of larger label with smaller label
EqualityCount = EqualityCount – 1 ; //Decrement to target next equivalency
While EqualityCount > =1
Pseudocode 2: