How do I change from 24 bit depth to 8 bit depth image?
33 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dayangku Nur Faizah Pengiran Mohamad
am 27 Jun. 2023
Kommentiert: DGM
am 10 Jul. 2024
I have image data for my input 256x256x3 uint8 and the bit depth is 24. My question is, how can I change from 24 bit depth image to 8 bit depth image without changing the colortype in 'truecolor'? Here's my ans value. And here's my codes to read image and info image:-
>> I=imread('1234.png');
>> imfinfo('1234.png')
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 27 Jun. 2023
imread() im2uint8() imwrite()
2 Kommentare
DGM
am 10 Jul. 2024
A truecolor image represented as 24b per pixel is 8b per sample (8b per sample, 3 samples per pixel). It will be read into the workspace as uint8, because that's how it's stored. It's already 8b data.
Since the stated goal is to produce an "8 bit" truecolor image, then that explicitly excludes indexed color representations.
I do not know of any image formats which support a conventional 8b per pixel RGB format (it might be possible with BMP, but good luck encoding/decoding it). There's good reason that such a thing might never be witnessed. At ~2b per sample, it would have terrible color resolution. This isn't 1989 anymore, so we're usually not interested in saving a few kB or accomodating legacy display buffers. Truecolor at 8bpp seems like an implausible interpretation.
So it's not indexed color, and it's probably not 8bpp RGB either. Therefore, we can conclude that indeed, the required image is the source image. How do you get an 8b image from your 24b image? You already have it.
However, there is one other possible interpretation if we discard the requirements and look at the actual usage. OP has a 24b truecolor representation of a grayscale medical image. They want an 8b image. If we disregard the assertion that the output should also be truecolor, then it would make sense that the "8bpp" representation can simply be obtained by collapsing the redundant RGB data into true single-channel grayscale. The answer then is to use im2gray(). The result would then be both 8b per pixel and 8b per sample.
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!