MCPcopy Create free account
hub / github.com/SSARCandy/Coherent-Line-Drawing / initial_ETF

Method initial_ETF

src/ETF.cpp:30–65  ·  view source on GitHub ↗

* Generate initial ETF * by taking perpendicular vectors(counter-clockwise) from gradient map */

Source from the content-addressed store, hash-verified

28 * by taking perpendicular vectors(counter-clockwise) from gradient map
29 */
30void ETF::initial_ETF(const std::string file, const cv::Size s)
31{
32 // Resizing Mat
33 cv::resize(flowField, flowField, s, 0, 0, CV_INTER_LINEAR);
34 cv::resize(refinedETF, refinedETF, s, 0, 0, CV_INTER_LINEAR);
35 cv::resize(gradientMag, gradientMag, s, 0, 0, CV_INTER_LINEAR);
36
37 cv::Mat src = cv::imread(file, 1);
38 cv::Mat src_n;
39 cv::Mat grad;
40 normalize(src, src_n, 0.0, 1.0, cv::NORM_MINMAX, CV_32FC1);
41 //GaussianBlur(src_n, src_n, cv::Size(51, 51), 0, 0);
42
43 // Generate grad_x and grad_y
44 cv::Mat grad_x, grad_y, abs_grad_x, abs_grad_y;
45 Sobel(src_n, grad_x, CV_32FC1, 1, 0, 5);
46 Sobel(src_n, grad_y, CV_32FC1, 0, 1, 5);
47
48 //Compute gradient
49 magnitude(grad_x, grad_y, gradientMag);
50 normalize(gradientMag, gradientMag, 0.0, 1.0, cv::NORM_MINMAX);
51
52 flowField = cv::Mat::zeros(src.size(), CV_32FC3);
53
54#pragma omp parallel for
55 for (int i = 0; i < src.rows; ++i) {
56 for (int j = 0; j < src.cols; ++j) {
57 cv::Vec3f u = grad_x.at<cv::Vec3f>(i, j);
58 cv::Vec3f v = grad_y.at<cv::Vec3f>(i, j);
59
60 flowField.at<cv::Vec3f>(i, j) = normalize(cv::Vec3f(v.val[0], u.val[0], 0));
61 }
62 }
63
64 flowField = rotate(flowField, 90);
65}
66
67
68void ETF::refine_ETF(int kernel)

Callers 1

readSrcMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected