區域灰度差變換

用一個矩形掩模計算像素點的灰度範圍

halcon例子:engraved.hdev

原理:

該像素點爲中心,所在矩形的最大灰度和最小灰度差。

void gray_range_rect(cv::Mat &src, cv::Mat &dst, int width, int height)

{

int half_w = width / 2;
int half_h = height / 2;
dst = cv::Mat::zeros(src.size(), CV_8UC1);
std::cout << "hello" << std::endl;

for (int i = 0; i < src.cols - width; i++)
{
    for (int j = 0; j < src.rows - height; j++)
    {
        cv::Rect rect = cv::Rect(i, j, width, height);
        cv::Mat roi = src(rect);
        cv::Point minLoc, maxLoc;

        double minVal, maxVal;
        cv::minMaxLoc(roi, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat());
        uchar diff = maxVal - minVal;
        dst.at<uchar>(j + half_h, i + half_w) = diff;



    }
}
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章