@@ -227,18 +227,20 @@ stMorph::kernelDecompInfo ftr_decomp(InputArray kernel)
227227Mat VisualizeCovering (Mat& kernel, const stMorph::kernelDecompInfo& kdi)
228228{
229229 const int rate = 20 ;
230- const int fluct = 5 ;
230+ const int fluct = 3 ;
231231 const int colors = 20 ;
232232 resize (kernel * 255 , kernel, Size (), rate, rate, InterpolationFlags::INTER_NEAREST);
233233 cvtColor (kernel, kernel, cv::COLOR_GRAY2BGR);
234234 Scalar color[colors]{
235- Scalar (83 , 89 , 73 ), Scalar (49 , 238 , 73 ), Scalar (220 , 192 , 189 ), Scalar (174 , 207 , 34 ),
236- Scalar (144 , 169 , 187 ), Scalar (137 , 94 , 76 ), Scalar (42 , 11 , 215 ), Scalar (113 , 11 , 204 ),
237- Scalar (71 , 124 , 8 ), Scalar (192 , 38 , 8 ), Scalar (82 , 201 , 8 ), Scalar (70 , 7 , 112 ),
238- Scalar (166 , 219 , 201 ), Scalar (154 , 173 , 0 ), Scalar (132 , 127 , 139 ), Scalar (154 , 1 , 68 ),
239- Scalar (231 , 131 , 56 ), Scalar (206 , 238 , 136 ), Scalar (188 , 78 , 173 ), Scalar (27 , 178 , 206 )
235+ Scalar (255 , 127 , 127 ), Scalar (255 , 127 , 191 ), Scalar (255 , 127 , 255 ), Scalar (191 , 127 , 255 ),
236+ Scalar (127 , 127 , 255 ), Scalar (127 , 191 , 255 ), Scalar (127 , 255 , 255 ), Scalar (127 , 255 , 191 ),
237+ Scalar (127 , 255 , 127 ), Scalar (191 , 255 , 127 ), Scalar (255 , 255 , 127 ), Scalar (255 , 191 , 127 )
240238 };
241239 int i = 0 ;
240+ for (int r = 0 ; r < kdi.rows ; r++)
241+ cv::line (kernel, Point (0 , r * rate), Point (kdi.cols * rate, r * rate), Scalar (0 ));
242+ for (int c = 0 ; c < kdi.cols ; c++)
243+ cv::line (kernel, Point (c * rate, 0 ), Point (c * rate, kdi.rows * rate), Scalar (0 ));
242244 for (int r = 0 ; r < kdi.stRects .size (); r++)
243245 {
244246 for (int c = 0 ; c < kdi.stRects [r].size (); c++)
@@ -247,10 +249,10 @@ Mat VisualizeCovering(Mat& kernel, const stMorph::kernelDecompInfo& kdi)
247249 for (Point p : kdi.stRects [r][c])
248250 {
249251 Rect rect (p, s);
250- int l = (rect.x ) * rate + i % fluct;
251- int t = (rect.y ) * rate + i % fluct;
252- int r = (rect.x + rect.width ) * rate - fluct + i % fluct;
253- int b = (rect.y + rect.height ) * rate - fluct + i % fluct;
252+ int l = (rect.x ) * rate + i % fluct + 2 ;
253+ int t = (rect.y ) * rate + i % fluct + 2 ;
254+ int r = (rect.x + rect.width ) * rate - fluct + i % fluct - 1 ;
255+ int b = (rect.y + rect.height ) * rate - fluct + i % fluct - 1 ;
254256 Point lt (l, t);
255257 Point lb (l, b);
256258 Point rb (r, b);
@@ -280,6 +282,8 @@ Mat VisualizePlanning(stMorph::kernelDecompInfo kdi)
280282 Rect nodeRect (col * g + g / 2 - 5 , row * g + g / 2 - 5 , 11 , 11 );
281283 if (kdi.stRects [row][col].size () > 0 )
282284 cv::rectangle (m, nodeRect, vCol, -1 );
285+ else
286+ cv::rectangle (m, nodeRect, vCol, 1 );
283287 }
284288 }
285289 for (int r = 0 ; r < rows; r++)
@@ -309,7 +313,7 @@ TEST(ximgproc_StMorph_decomp, feature_rnd50) { ftr_decomp(knRnd(1000, 50)); }
309313TEST (ximgproc_StMorph_decomp, feature_rnd80) { ftr_decomp (knRnd (1000 , 80 )); }
310314TEST (ximgproc_StMorph_decomp, feature_rnd90) { ftr_decomp (knRnd (1000 , 90 )); }
311315TEST (ximgproc_StMorph_decomp, feature_visualize) {
312- Mat kernel = getStructuringElement (MORPH_ELLIPSE, Size (21 , 21 ));
316+ Mat kernel = getStructuringElement (MORPH_ELLIPSE, Size (5 , 5 ));
313317 auto kdi = ftr_decomp (kernel);
314318 Mat covering = VisualizeCovering (kernel, kdi);
315319 Mat plan = VisualizePlanning (kdi);
@@ -366,7 +370,7 @@ TEST(ximgproc_StMorph_eval, pdi)
366370
367371 // cv-ellipse
368372 kn = getStructuringElement (MORPH_ELLIPSE, sz);
369- if (i <= 41 )
373+ if (i <= 23 )
370374 {
371375 meter.start ();
372376 cv::erode (img, dst, kn);
@@ -449,7 +453,7 @@ TEST(ximgproc_StMorph_eval, integrated)
449453
450454 // cv-ellipse
451455 kn = getStructuringElement (MORPH_ELLIPSE, sz);
452- if (i <= 41 )
456+ if (i <= 23 )
453457 {
454458 meter.start ();
455459 cv::erode (img, dst, kn);
0 commit comments