@@ -13,20 +13,35 @@ TEST(RadonTransformTest, output_size)
1313 Mat radon;
1414 cv::ximgproc::RadonTransform (src, radon);
1515
16- ASSERT_EQ (radon.rows , 180 );
17- ASSERT_EQ (radon.cols , 256 );
16+ ASSERT_EQ (radon.rows , 363 );
17+ ASSERT_EQ (radon.cols , 180 );
18+
19+ cv::ximgproc::RadonTransform (src, radon, 1 , 0 , 180 , true );
20+
21+ ASSERT_EQ (radon.rows , 256 );
22+ ASSERT_EQ (radon.cols , 180 );
1823}
1924
2025TEST (RadonTransformTest, output_type)
2126{
22- Mat src (Size (256 , 256 ), CV_8U, Scalar (0 ));
23- circle (src , Point (128 , 128 ), 64 , Scalar (255 ), FILLED);
27+ Mat src_int (Size (256 , 256 ), CV_8U, Scalar (0 ));
28+ circle (src_int , Point (128 , 128 ), 64 , Scalar (255 ), FILLED);
2429 Mat radon, radon_norm;
25- cv::ximgproc::RadonTransform (src , radon);
26- cv::ximgproc::RadonTransform (src , radon_norm, 1 , 0 , 180 , false , true );
30+ cv::ximgproc::RadonTransform (src_int , radon);
31+ cv::ximgproc::RadonTransform (src_int , radon_norm, 1 , 0 , 180 , false , true );
2732
2833 ASSERT_EQ (radon.type (), CV_32SC1);
2934 ASSERT_EQ (radon_norm.type (), CV_8U);
35+
36+ Mat src_float (Size (256 , 256 ), CV_32FC1, Scalar (0 ));
37+ Mat src_double (Size (256 , 256 ), CV_32FC1, Scalar (0 ));
38+ cv::ximgproc::RadonTransform (src_float, radon);
39+ cv::ximgproc::RadonTransform (src_float, radon_norm, 1 , 0 , 180 , false , true );
40+ ASSERT_EQ (radon.type (), CV_64FC1);
41+ ASSERT_EQ (radon_norm.type (), CV_8U);
42+ cv::ximgproc::RadonTransform (src_double, radon);
43+ ASSERT_EQ (radon.type (), CV_64FC1);
44+ ASSERT_EQ (radon_norm.type (), CV_8U);
3045}
3146
3247TEST (RadonTransformTest, accuracy_by_pixel)
@@ -38,38 +53,27 @@ TEST(RadonTransformTest, accuracy_by_pixel)
3853
3954 ASSERT_EQ (radon.at <int >(0 , 0 ), 0 );
4055
41- ASSERT_GT (radon.at <int >(128 , 128 ), 32000 );
42- ASSERT_LT (radon.at <int >(128 , 128 ), 33000 );
56+ ASSERT_GT (radon.at <int >(128 , 128 ), 18000 );
57+ ASSERT_LT (radon.at <int >(128 , 128 ), 19000 );
4358}
4459
45- TEST (RadonTransformTest, accuracy_by_col_sum )
60+ TEST (RadonTransformTest, accuracy_uchar )
4661{
47- Mat src (Size (256 , 256 ), CV_8U, Scalar (0 ));
48- circle (src, Point (128 , 128 ), 64 , Scalar (255 ), FILLED);
49- Mat radon;
50- cv::ximgproc::RadonTransform (src, radon, 1 , 0 , 180 , false , true );
51- Mat sum_col;
52- cv::reduce (radon, sum_col, 0 , REDUCE_SUM, CV_32SC1);
53-
54- ASSERT_EQ (sum_col.at <int >(0 ), 0 );
62+ Mat src (Size (10 , 10 ), CV_8UC1, Scalar (1 ));
63+ cv::Mat radon;
64+ ximgproc::RadonTransform (src, radon, 45 , 0 , 180 , false , false );
5565
56- ASSERT_GT (sum_col.at <int >(128 ), 45000 );
57- ASSERT_LT (sum_col.at <int >(128 ), 46000 );
66+ ASSERT_EQ (sum (radon.col (0 ))[0 ], 100 );
5867}
5968
60- TEST (RadonTransformTest, accuracy_by_row_sum )
69+ TEST (RadonTransformTest, accuracy_float )
6170{
62- Mat src (Size (256 , 256 ), CV_8U, Scalar (0 ));
63- circle (src, Point (128 , 128 ), 64 , Scalar (255 ), FILLED);
64- Mat radon;
65- cv::ximgproc::RadonTransform (src, radon, 1 , 0 , 180 , false , true );
66- Mat sum_row;
67- cv::reduce (radon, sum_row, 1 , REDUCE_SUM, CV_32SC1);
68-
69- ASSERT_LT (abs (sum_row.at <int >(0 ) - sum_row.at <int >(128 )), 1000 );
71+ Mat src (Size (10 , 10 ), CV_32FC1, Scalar (1.1 ));
72+ cv::Mat radon;
73+ ximgproc::RadonTransform (src, radon, 45 , 0 , 180 , false , false );
7074
71- ASSERT_GT (sum_row. at < int > (0 ), 25000 );
72- ASSERT_LT (sum_row. at < int > (0 ), 26000 );
75+ ASSERT_GT (sum (radon. col (0 ))[ 0 ], 109 );
76+ ASSERT_LT (sum (radon. col (0 ))[ 0 ], 111 );
7377}
7478
7579} }
0 commit comments