How to calculate "CONTRAST PER PIXEL(CPP)" of an image
5 views (last 30 days)
Show older comments
To measure the quality of an image i'm using Contrast Per pixel(CPP).
It is defined as the average intensity difference between a pixel and its adjacent pixel.
I'm not used to with this metric. If anybody is well known with this metric, please share it.
Thanks
0 Comments
Accepted Answer
Image Analyst
on 4 Jul 2013
Something like this perhaps (untested)
kernel = [-1, -1, -1, -1, 8, -1, -1, -1]/8;
diffImage = conv2(double(grayImage), kernel, 'same');
cpp = mean2(diffImage);
3 Comments
Image Analyst
on 4 Jul 2013
Edited: Image Analyst
on 4 Jul 2013
Conv2() is a sliding filter. I made a 3 by 3 window that basically takes the (center - upper left) + (center - top left) + (center - upper right) + (center - left) + (center - right) + (center - lower left) + (center - bottom left) + (center - lower right). That is the sum of all the differences between the center and the 8 surrounding pixels. Then I divide by 8 to get the average difference between a pixel and it's neighbors. The conv2() function just does that operation on every single pixel in the image as it slides that window along pixel-by-pixel and carries out those operations. Then we have an image where each pixel is the average difference between the original pixel at that location and the 8 neighbors. The mean2 simply gets the mean over all the pixels.
You would have to have a metric that models human perception. I'm not aware of any, but you might check here: http://en.wikipedia.org/wiki/Video_quality
More Answers (1)
shree san
on 10 Oct 2017
Dear sir/Madam, Thank you so much for the above code. It helped me to calculate the contrast per pixel. But my output gives negative values. Is that right and how I can say the best contrast enhanced image from the output?
output I got is -58.3770 original image
-499.6260 contrast enhanced image
Looking for a favourable answer. Thank you
2 Comments
Image Analyst
on 12 Oct 2017
Yes, it is possible to get a negative Laplacian for some pixels. I don't know how you got your numbers. To get a nice contrast adjustment, try imadjust().
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!