Subversion Repositories seema-scanner

Rev

Rev 208 | Rev 236 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 208 Rev 232
Line 11... Line 11...
11
#include "algorithmtools.h"
11
#include "algorithmtools.h"
12
 
12
 
13
// Algorithm
13
// Algorithm
14
AlgorithmGrayCodeHorzVert::AlgorithmGrayCodeHorzVert(unsigned int _screenCols, unsigned int _screenRows) : Algorithm(_screenCols, _screenRows){
14
AlgorithmGrayCodeHorzVert::AlgorithmGrayCodeHorzVert(unsigned int _screenCols, unsigned int _screenRows) : Algorithm(_screenCols, _screenRows){
15
 
15
 
16
    NbitsHorz = ceilf(log2f((float)screenCols)) - 1;
16
    NbitsHorz = ceilf(log2f((float)screenCols));
17
    NbitsVert =  ceilf(log2f((float)screenRows)) - 1;
17
    NbitsVert =  ceilf(log2f((float)screenRows));
18
    N = 2 + (NbitsHorz+NbitsVert)*2;
18
    N = 2 + (NbitsHorz+NbitsVert)*2;
19
 
19
 
20
    // all on pattern
20
    // all on pattern
21
    cv::Mat allOn(1, screenCols, CV_8UC3, cv::Scalar::all(255));
21
    cv::Mat allOn(1, screenCols, CV_8UC3, cv::Scalar::all(255));
22
    patterns.push_back(allOn);
22
    patterns.push_back(allOn);
Line 33... Line 33...
33
 
33
 
34
        for(unsigned int j=0; j<screenCols; j++){
34
        for(unsigned int j=0; j<screenCols; j++){
35
 
35
 
36
            unsigned int jGray = binaryToGray(j);
36
            unsigned int jGray = binaryToGray(j);
37
            // Amplitude of channels
37
            // Amplitude of channels
38
            int bit = (int)getBit(jGray, NbitsHorz-p+1);
38
            int bit = (int)getBit(jGray, NbitsHorz-p);
39
            pattern.at<cv::Vec3b>(0,j) = cv::Vec3b(255.0*bit,255.0*bit,255.0*bit);
39
            pattern.at<cv::Vec3b>(0,j) = cv::Vec3b(255.0*bit,255.0*bit,255.0*bit);
40
            int invBit = bit^1;
40
            int invBit = bit^1;
41
            patternInv.at<cv::Vec3b>(0,j) = cv::Vec3b(255.0*invBit,255.0*invBit,255.0*invBit);
41
            patternInv.at<cv::Vec3b>(0,j) = cv::Vec3b(255.0*invBit,255.0*invBit,255.0*invBit);
42
        }
42
        }
43
        patterns.push_back(pattern);
43
        patterns.push_back(pattern);
Line 51... Line 51...
51
 
51
 
52
        for(unsigned int j=0; j<screenRows; j++){
52
        for(unsigned int j=0; j<screenRows; j++){
53
 
53
 
54
            unsigned int jGray = binaryToGray(j);
54
            unsigned int jGray = binaryToGray(j);
55
            // Amplitude of channels
55
            // Amplitude of channels
56
            int bit = (int)getBit(jGray, NbitsVert-p+1);
56
            int bit = (int)getBit(jGray, NbitsVert-p);
57
            pattern.at<cv::Vec3b>(j,0) = cv::Vec3b(255.0*bit,255.0*bit,255.0*bit);
57
            pattern.at<cv::Vec3b>(j,0) = cv::Vec3b(255.0*bit,255.0*bit,255.0*bit);
58
            int invBit = bit^1;
58
            int invBit = bit^1;
59
            patternInv.at<cv::Vec3b>(j,0) = cv::Vec3b(255.0*invBit,255.0*invBit,255.0*invBit);
59
            patternInv.at<cv::Vec3b>(j,0) = cv::Vec3b(255.0*invBit,255.0*invBit,255.0*invBit);
60
        }
60
        }
61
        patterns.push_back(pattern);
61
        patterns.push_back(pattern);