Update: the colour discrepancy is gone if I save the orginal image as PNG and then read it using imread(). This means that the issue is in JPG lossy compression! But how would I resolve it without changing the format?
imread seems to alter the image saturation?
5 次查看(过去 30 天)
显示 更早的评论
Why does the image read by imread() seem to have a reduced saturation compared to the original image? This also happens when the image is read through an imageDatastore object, I guess the underlying method is still imread(). The codes I used are included below:
img = imread("img_original.jpg");
figure, imshow(img)
which produce something like this:
while the original image file, open in FastStone looks like this:
You can also open the img_original.jpg to see it yourself.
While inspecting the histogram, I see that the blue channel has been altered the most when comparing to the histogram from FastStone. The original image seems to have a lot of blue pixels saturated at 0, while the Matlab's blue histogram shows a slight shift to the right. This is also evident from the red channel.
Factors I have investigated include:
- bit-depth
- JPG format
- imread optional arguments
- Monitor display setting: the colour histogram is evident that colour has changed
- FastStone: I also tried the default Windows image viewer and it looks the same as in FastStone
Can someone please explain what may cause this colour discrepancy when I just simply read the image? Thank you!
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!