Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
 public void CopyPixelData(MyPixelAvrg avrg)
 {
     this.red   = (byte)avrg.red;
     this.green = (byte)avrg.green;
     this.blue  = (byte)avrg.blue;
 }