コード例 #1
0
 /// <summary>
 /// Calls the actual <c>addQualityIssue</c>
 /// method, with the feature list obtained from the
 /// calibration image <c>cImg</c>
 /// </summary>
 /// <param name="cImg">
 /// Calibration image model, which has been tested for
 /// the quality feature defined with <c>type</c>
 /// </param>
 /// <param name="type">
 /// Constant starting with QUALITY_* describing one of the quality 
 /// features
 /// </param>
 /// <param name="score">
 /// Score determined for the quality feature
 /// </param>
 public void addQualityIssue(CalibImage cImg, int type, double score)
 {
     ArrayList qList = cImg.getQualityIssueList();
     addQualityIssue(qList, type, score);
 }
コード例 #2
0
        /// <summary>
        /// Tests different quality features for the calibration image 
        /// <c>cImg</c>
        /// </summary>
        /// <returns>
        /// Returns a value indicating the success or failure
        /// of the quality assessment
        /// </returns>
        public bool testQualityIssues(CalibImage cImg)
        {
            ArrayList qList;

            HObject markContours;
            HObject plateRegion;
            HImage  mImg;
            HTuple  score, score2, contrast;
            int  numRegions, numContours;
            bool qualityFailure;

            mImg            = cImg.getImage();
            qList           = cImg.getQualityIssueList();
            procedure       = new QualityProcedures();
            contrast        = new HTuple();
            qualityFailure  = false;
            // DescriptionFileName = mDescrFileName;
            ;

            try
            {
                procedure.find_caltab_edges(mImg, out plateRegion,
                                            out markContours,
                                            new HTuple(mDescrFileName));
                numRegions   = plateRegion.CountObj();
                numContours  = markContours.CountObj();

                if(mImageTests < QUALITY_ISSUE_TEST_NONE)
                {
                    if(numRegions == 0)
                    {
                        qualityFailure = true;
                    }
                    else
                    {
                        procedure.eval_caltab_overexposure(mImg, plateRegion, out score);
                        addQualityIssue(qList, QUALITY_ISSUE_IMG_EXPOSURE, score.D);
                    }

                    if(numContours == 0)
                    {
                        qualityFailure = true;
                    }
                    else
                    {
                        procedure.eval_caltab_contrast_homogeneity(mImg, markContours,out contrast, out score, out score2);
                        addQualityIssue(qList, QUALITY_ISSUE_IMG_CONTRAST,    score.D);
                        addQualityIssue(qList, QUALITY_ISSUE_IMG_HOMOGENEITY, score2.D);

                        procedure.eval_caltab_size(mImg, plateRegion, markContours, out score);
                        addQualityIssue(qList, QUALITY_ISSUE_IMG_CALTAB_SIZE, score.D);
                    }

                    if(mImageTests == QUALITY_ISSUE_TEST_ALL)
                    {
                        procedure.eval_caltab_focus(mImg, markContours,contrast , out score);
                        addQualityIssue(qList, QUALITY_ISSUE_IMG_FOCUS, score.D);
                    }
                }
            }
            catch(HOperatorException e)
            {
                throw(e);
            }

            return qualityFailure;
        }