|   | Begin | 
|   |  CosineSimilarity (A, B) { | 
|   |   RETURN DotProduct (A, B)/(Norm (A)  Norm (B)); | 
|   |  } | 
|   |  CalculateMeanVector (Vectors) { | 
|   |   RETURN average of vectors along each dimension; | 
|   |  } | 
|   |  CalculateStandardDeviation (Vectors) { | 
|   |   RETURN standard deviation of vectors along each dimension; | 
|   |  } | 
|   |  CalculateCosineSimilarities (ImageVectors) { | 
|   |   CosineSimilarities ← Empty list; | 
|   |   FOR each vector in ImageVectors { | 
|   |    Cosine ← CosineSimilarity (Vector, CalculateMeanVector (All previous vectors in ImageVectors)); | 
|   |    Append Cosine to CosineSimilarities; | 
|   |   } | 
|   |   RETURN CosineSimilarities; | 
|   |  } | 
|   |  CalculateThresholds (CosineSimilarities) { | 
|   |   Mean ← calculate mean of CosineSimilarities; | 
|   |   StdDev ← CalculateStandardDeviation (CosineSimilarities); | 
|   |   ThresholdHigh ← mean + 3  StdDev; | 
|   |   ThresholdLow ← mean − 3  StdDev; | 
|   |   RETURN ThresholdHigh, ThresholdLow; | 
|   |  } | 
|   |  FilterImagesByCosineSimilarity (ImageVectors) { | 
|   |   CosineSimilarities ← CalculateCosineSimilarities (ImageVectors); | 
|   |   ThresholdHigh, ThresholdLow ← CalculateThresholds (CosineSimilarities); | 
|   |   FilteredImages ← Empty list; | 
|   |   FOR each Cosine in CosineSimilarities { | 
|   |    IF Cosine is within ThresholdHigh and ThresholdLow { | 
|   |     Append corresponding ImageVector to FilteredImages; | 
|   |    } | 
|   |   } | 
|   |   RETURN FilteredImages; | 
|   |  } | 
|   | End |