# CLAHE has obvious grid artifacts

I get a camera with a gray surrounding circular shadow and it affects the result of my other function. I consider doing some to reduce the effect of the shadow.

I find CLAHE function may somehow help me so I copy the code from here

        video >> bgr_image;
cv::cvtColor(bgr_image, lab_image, CV_BGR2Lab);

// Extract the L channel
std::vector<cv::Mat> lab_planes(3);
cv::split(lab_image, lab_planes);  // now we have the L image in lab_planes[0]

// apply the CLAHE algorithm to the L channel
cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(3,Size(8,8));

cv::Mat dst;
clahe->apply(lab_planes[0], dst);

dst.copyTo(lab_planes[0]);
cv::merge(lab_planes, lab_image);

// convert back to RGB
cv::Mat image_clahe;
cv::cvtColor(lab_image, image_clahe, CV_Lab2BGR);

// display the results  (you might also want to see lab_planes[0] before and after).
cv::imshow("imageoriginal", bgr_image);
cv::imshow("image CLAHE", image_clahe);


CLAHE looks good in all of the examples on the internet, however, I find it always results in very obvious grid artifacts everywhere. I can get rid of it by reducing the parameter but the shadow would be still there.

Is it normal? I can do some bilateral filter to smooth it but I still prefer a more smooth equalization method.

before CLAHE

after CLAHE

edit retag close merge delete