How to separate RGB values of an image.
显示 更早的评论
We know that each pixel i in the input image I has rgb colors. My question is how to store them in a 3-vector Ii. Each color is being represented using a 64-bit floating-point number scaled to between 0 and 1.
采纳的回答
更多回答(3 个)
Sailesh Sidhwani
2018-10-25
编辑:Sailesh Sidhwani
2020-9-3
1 个投票
Starting R2018b, Image Processing Toolbox has a new function "imsplit" which does exactly this: https://www.mathworks.com/help/images/ref/imsplit.html
Sean de Wolski
2011-2-1
Rchannel = I(:,:,1);
Gchannel = I(:,:,2);
Bchannel = I(:,:,3);
2 个评论
Abinaya
2014-5-6
can you pls explain that 1 2 3 in each channel.
Walter Roberson
2018-10-25
It is by definition: MATLAB interprets the first pane of the third dimension as being red values, the second pane of the third dimension as being green values, the third pane of the third dimension as being blue values.
That particular ordering is arbitrary: there is no reason why it could not have been Green, Red, Blue for example, which would have made some sense in terms of the sensitivity of the human eye to brightness in daylight. Or it could have been Blue that was first, reflecting the fact that the human eye is most sensitive to contrast in the blues. But for whatever reason, RGB was the order standardized on.
Sean de Wolski
2011-2-1
You could also do it so you have a cell array with each index being a 3x1 vector, perhaps:
I2 = cellfun(@squeeze,num2cell(I,3),'uni',false);
类别
在 帮助中心 和 File Exchange 中查找有关 Image Processing Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!