Beispiel #1
0
void KeyPointsDeliverer::calcGradientImages(Mat& mouthImg)
{
    double pseudoHuePxl = 0.0;
    int luminancePxl = 0;

    Mat rTop(mouthImg.rows, mouthImg.cols, CV_8UC1);
    Mat rMid(mouthImg.rows, mouthImg.cols, CV_8UC1);
    Mat rLow(mouthImg.rows, mouthImg.cols, CV_8UC1);


    for (int i = 0; i < mouthImg.rows; ++i) {
        for (int j = 0; j < mouthImg.cols; ++j) {
            pseudoHuePxl = imageProcessing.pseudoHuePxl(mouthImg, j, i);
            luminancePxl = imageProcessing.luminancePxl(mouthImg, j, i);

            rTop.at<uchar>(i,j) = (int) (pseudoHuePxl - luminancePxl);
            rMid.at<uchar>(i,j) = (int) (pseudoHuePxl - luminancePxl);
            rLow.at<uchar>(i,j) = (int) (pseudoHuePxl + luminancePxl);
        }
    }

    double minVal, maxVal;

    Mat rTopTemp;
    //Sobel(rTop, rTopTemp, CV_32FC1, 0, 1);
    Scharr(rTop, rTopTemp, CV_32FC1, 0, 1);
    minMaxLoc(rTopTemp, &minVal, &maxVal);
    rTopTemp.convertTo(rTopFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));

    Mat rMidTemp;
    //Sobel(rMid, rMidTemp, CV_32FC1, 0, 1);
    Scharr(rMid, rMidTemp, CV_32FC1, 0, 1);
    minMaxLoc(rMidTemp, &minVal, &maxVal);
    rMidTemp.convertTo(rMidFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));

    for (int i = 0; i < mouthImg.rows; ++i) {
        for (int j = 0; j < mouthImg.cols; ++j) {
            pseudoHuePxl = imageProcessing.pseudoHuePxl(mouthImg, j, i);

            rMidFinal.at<uchar>(i,j) = (int) (rMidFinal.at<uchar>(i,j) * pseudoHuePxl);
        }
    }

    Mat rLowTemp;
    //Sobel(rLow, rLowTemp, CV_32FC1, 0, 1);
    Scharr(rLow, rLowTemp, CV_32FC1, 0, 1);
    minMaxLoc(rLowTemp, &minVal, &maxVal);
    rLowTemp.convertTo(rLowFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal));
}
Beispiel #2
0
void FancyLabel::createImageSections(){

    int upperMiddle = m_cutHeight - m_sectionHeight/2;
    QRect rTop(0, 0,
               m_originalImage.width(),
               upperMiddle);

    m_top = m_originalImage.copy(rTop);
    Q_ASSERT(m_top.height() == upperMiddle);

    int lowerMiddle = (m_cutHeight  + m_sectionHeight/2 +1);
    QRect rMiddle(0, upperMiddle +1,
                  m_originalImage.width(),
                  lowerMiddle - upperMiddle);

    m_middle =m_originalImage.copy(rMiddle);

    QRect rBottom(0, lowerMiddle+1,
                  m_originalImage.width(),
                  m_originalImage.height() - lowerMiddle);
    m_bottom =m_originalImage.copy(rBottom);

}