Ejemplo n.º 1
0
        /// <summary>
        /// load the set of rectangular filters
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="rectangularFilter"></param>
        public static RectangularFilter LoadFilterSet(string filename)
        {
            RectangularFilter rectangularFilter = null;
            FileStream        fstream           = new FileStream(filename, FileMode.Open, FileAccess.Read);
            BinaryFormatter   fmt = new BinaryFormatter();

            rectangularFilter = (RectangularFilter)fmt.Deserialize(fstream);
            fstream.Close();
            return(rectangularFilter);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Calculate the LBP distance
        /// </summary>
        /// <param name="frontUIData"></param>
        public void LBPDistance(DataExchange frontUIData)
        {
            ParseConfig(frontUIData);

            List <Image>    listFilteredImage = new List <Image>();
            int             nEl = frontUIData.ElementCount;
            ExchangeElement exEl = null;
            Image           filteredImage = null;
            LBPFilter       lbpFilter = new LBPFilter(1, 8, true, true);
            int             i, j;

            for (i = 0; i < nEl; i++)
            {
                exEl          = frontUIData.GetElement(i);
                filteredImage = GetData(exEl, lbpFilter);
                listFilteredImage.Add(filteredImage);
            }

            SparseFilterExample  example;
            LBPIntegralHistogrom lbpHist1 = new LBPIntegralHistogrom();
            LBPIntegralHistogrom lbpHist2 = new LBPIntegralHistogrom();

            StrongClassifier  strongClassifier   = LoadClassifier(_classifierFileName);
            RectangularFilter rectangularFilters = LoadFilterSet(_rectangularFileName);

            List <int> listRectangularIndices = GetFilterIndex(strongClassifier);

            float[]  score    = new float[2];
            double[] expScore = new double[2];

            double[,] distanceMatrix = new double[nEl, nEl];

            for (i = 0; i < nEl; i++)
            {
                lbpHist1.Create(listFilteredImage[i], lbpFilter.m_nFilterRange + 1);
                for (j = 0; j < i; j++)
                {
                    lbpHist2.Create(listFilteredImage[j], lbpFilter.m_nFilterRange + 1);
                    example = CreateFilterResponses(lbpHist1, lbpHist2,
                                                    rectangularFilters, listRectangularIndices);
                    score[0] = score[1] = 0;
                    score    = strongClassifier.Vote(example, score, _stage);

                    expScore[0]          = Math.Exp(Convert.ToDouble(score[0]));
                    expScore[1]          = Math.Exp(Convert.ToDouble(score[1]));
                    distanceMatrix[i, j] = expScore[0] / (expScore[0] + expScore[1]) + 0.05;
                    distanceMatrix[j, i] = distanceMatrix[i, j];
                }
            }
            frontUIData.DistanceMatrix = distanceMatrix;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get the filter responses based on the LBP integral histogram
        /// </summary>
        private SparseFilterExample CreateFilterResponses(LBPIntegralHistogrom iHist1, LBPIntegralHistogrom iHist2,
                                                          RectangularFilter rectangularFilters, List <int> listFilterIndices)
        {
            SparseFilterExample example = new SparseFilterExample();

            System.Drawing.Rectangle rectangle;
            float[] hist1;
            float[] hist2;
            foreach (int indexFilters in listFilterIndices)
            {
                rectangle = rectangularFilters.m_listRectangles[indexFilters];
                hist1     = LBPIntegralHistogrom.Histogram(iHist1, rectangle);
                hist2     = LBPIntegralHistogrom.Histogram(iHist2, rectangle);
                example.Add(indexFilters, ArrayUtils.ChiSquare(hist1, hist2));
            }
            return(example);
        }