@@ -327,4 +327,189 @@ TEST(ximgproc_StMorph_decomp, feature_visualize) {
327327
328328#pragma endregion
329329
330+ #pragma region morph_comp
331+
332+ TEST (ximgproc_StMorph_eval, pdi)
333+ {
334+ Mat img = im (CV_8UC3);
335+ Mat dst;
336+ int sizes[]{ 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 35 , 41 , 45 , 51 , 55 , 61 , 71 ,
337+ 81 , 91 , 101 , 121 , 151 , 171 , 201 , 221 , 251 , 301 , 351 , 401 , 451 , 501 };
338+
339+ std::ofstream ss (" opencvlog_pdi.txt" , std::ios_base::out);
340+
341+ for (int c = 0 ; c < 3 ; c++)
342+ for (int i: sizes)
343+ {
344+ ss << i;
345+ Size sz (i, i);
346+ cv::TickMeter meter;
347+ Mat kn;
348+ stMorph::kernelDecompInfo kdi;
349+
350+ // cv-rect
351+ kn = getStructuringElement (MORPH_RECT, sz);
352+ if (i <= 401 )
353+ {
354+ meter.start ();
355+ cv::erode (img, dst, kn);
356+ meter.stop ();
357+ ss << " \t " << meter.getTimeMilli ();
358+ meter.reset ();
359+ }
360+ else
361+ {
362+ ss << " \t " ;
363+ }
364+
365+ // cv-cross
366+ kn = getStructuringElement (MORPH_CROSS, sz);
367+ if (i <= 401 )
368+ {
369+ meter.start ();
370+ cv::erode (img, dst, kn);
371+ meter.stop ();
372+ ss << " \t " << meter.getTimeMilli ();
373+ meter.reset ();
374+ }
375+ else
376+ {
377+ ss << " \t " ;
378+ }
379+
380+ // cv-ellipse
381+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
382+ if (i <= 23 )
383+ {
384+ meter.start ();
385+ cv::erode (img, dst, kn);
386+ meter.stop ();
387+ ss << " \t " << meter.getTimeMilli ();
388+ meter.reset ();
389+ }
390+ else
391+ {
392+ ss << " \t " ;
393+ }
394+
395+ // st-rect
396+ kn = getStructuringElement (MORPH_RECT, sz);
397+ kdi = stMorph::decompKernel (kn);
398+ meter.start ();
399+ stMorph::erode (img, dst, kdi);
400+ meter.stop ();
401+ ss << " \t " << meter.getTimeMilli ();
402+ meter.reset ();
403+
404+ // st-cross
405+ kn = getStructuringElement (MORPH_CROSS, sz);
406+ kdi = stMorph::decompKernel (kn);
407+ meter.start ();
408+ stMorph::erode (img, dst, kdi);
409+ meter.stop ();
410+ ss << " \t " << meter.getTimeMilli ();
411+ meter.reset ();
412+
413+ // st-ellipse
414+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
415+ kdi = stMorph::decompKernel (kn);
416+ meter.start ();
417+ stMorph::erode (img, dst, kdi);
418+ meter.stop ();
419+ ss << " \t " << meter.getTimeMilli () << " \n " ;
420+ meter.reset ();
421+ }
422+ ss.close ();
423+ }
424+
425+ TEST (ximgproc_StMorph_eval, integrated)
426+ {
427+ Mat img = im (CV_8UC3);
428+ Mat dst;
429+ int sizes[]{ 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 35 , 41 , 45 , 51 , 55 , 61 , 71 ,
430+ 81 , 91 , 101 , 121 , 151 , 171 , 201 , 221 , 251 , 301 , 351 , 401 , 451 , 501 };
431+
432+ std::ofstream ss (" opencvlog_integrated.txt" , std::ios_base::out);
433+
434+ for (int c = 0 ; c < 3 ; c++)
435+ for (int i: sizes)
436+ {
437+ ss << i;
438+ Size sz (i, i);
439+ cv::TickMeter meter;
440+ Mat kn;
441+
442+ // cv-rect
443+ kn = getStructuringElement (MORPH_RECT, sz);
444+ if (i <= 401 )
445+ {
446+ meter.start ();
447+ cv::erode (img, dst, kn);
448+ meter.stop ();
449+ ss << " \t " << meter.getTimeMilli ();
450+ meter.reset ();
451+ }
452+ else
453+ {
454+ ss << " \t " ;
455+ }
456+
457+ // cv-cross
458+ kn = getStructuringElement (MORPH_CROSS, sz);
459+ if (i <= 401 )
460+ {
461+ meter.start ();
462+ cv::erode (img, dst, kn);
463+ meter.stop ();
464+ ss << " \t " << meter.getTimeMilli ();
465+ meter.reset ();
466+ }
467+ else
468+ {
469+ ss << " \t " ;
470+ }
471+
472+ // cv-ellipse
473+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
474+ if (i <= 23 )
475+ {
476+ meter.start ();
477+ cv::erode (img, dst, kn);
478+ meter.stop ();
479+ ss << " \t " << meter.getTimeMilli ();
480+ meter.reset ();
481+ }
482+ else
483+ {
484+ ss << " \t " ;
485+ }
486+
487+ // st-rect
488+ kn = getStructuringElement (MORPH_RECT, sz);
489+ meter.start ();
490+ stMorph::erode (img, dst, kn);
491+ meter.stop ();
492+ ss << " \t " << meter.getTimeMilli ();
493+ meter.reset ();
494+
495+ // st-cross
496+ kn = getStructuringElement (MORPH_CROSS, sz);
497+ meter.start ();
498+ stMorph::erode (img, dst, kn);
499+ meter.stop ();
500+ ss << " \t " << meter.getTimeMilli ();
501+ meter.reset ();
502+
503+ // st-ellipse
504+ kn = getStructuringElement (MORPH_ELLIPSE, sz);
505+ meter.start ();
506+ stMorph::erode (img, dst, kn);
507+ meter.stop ();
508+ ss << " \t " << meter.getTimeMilli () << " \n " ;
509+ meter.reset ();
510+ }
511+ ss.close ();
512+ }
513+ #pragma endregion
514+
330515}} // opencv_test:: ::
0 commit comments