private void CalcSegmentation() { bool isReady = false; Dictionary <int, MyPixelAvrg> averageP = new Dictionary <int, MyPixelAvrg>(); for (byte i = 0; i < SegList.Count; i++) { averageP[i] = new MyPixelAvrg(i); } int counter = 20 * this.segmentNumber; while (!isReady) { isReady = true; for (int i = 0; i < arrP.Count; i++) { byte SegmentIndex = FindClosestSegmentPoint(arrP[i]); if (SegmentIndex != arrP[i].segment) { isReady = false; } MyPixel tp = arrP[i]; tp.setSegment(SegmentIndex); arrP[i] = tp; MyPixelAvrg temp = averageP[SegmentIndex]; temp.AddToColor(arrP[i]); averageP[SegmentIndex] = temp; counter--; } for (int i = 0; i < SegList.Count; i++) { MyPixelAvrg temp = averageP[i]; temp.AverageOut(); averageP[i] = temp; MyPixel tp = SegList[i]; tp.CopyPixelData(averageP[i]); SegList[i] = tp; } } }
public void CopyPixelData(MyPixelAvrg avrg) { this.red = (byte)avrg.red; this.green = (byte)avrg.green; this.blue = (byte)avrg.blue; }