示例#1
0
        public void Transformation()
        {
            SV = new float[level];
            int size = oldData.Width * oldData.Height;

            for (int i = 0; i < level; i++)
            {
                SV[i] = (histV_acc[i] * 1.0F) / size;
            }

            for (int i = 0; i < Image.Data.Width; i++)
            {
                for (int k = 0; k < Image.Data.Height; k++)
                {
                    HSV oldHsv = HSVAndRGB.RGB2HSV(oldData.GetRGBDataAt(i, k));
                    oldHsv.V = SV[(int)(oldHsv.V * 255)];
                    Image.Data.SetRGBDataAt(i, k, HSVAndRGB.HSV2RGB(oldHsv));
                }
            }
        }
示例#2
0
        public void GetHistogram()
        {
            histV     = new int[level];
            histV_acc = new int[level];

            for (int i = 0; i < oldData.Width; i++)
            {
                for (int k = 0; k < oldData.Height; k++)
                {
                    histV[(int)(HSVAndRGB.RGB2HSV(oldData.GetRGBDataAt(i, k)).V *255)]++;
                }
            }

            for (int i = 0; i < level; i++)
            {
                histV_acc[i] = histV[i];
            }

            for (int i = 1; i < level; i++)
            {
                histV_acc[i] += histV_acc[i - 1];
            }
        }