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?
13 ビュー (過去 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!
3 件のコメント
回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!