# What is the decimal RGB scale used in Matlab called?

254 次查看（过去 30 天）
P_L 2019-2-7

Hi there,
I have been trying lots of websites to find colours for my plots. The colours i find on webistes that are RGB are ont on the decimal scale. Therefore is there another scale I should search for, or is there a way to convert them?
Example:
• RGB: (37, 147, 174)
Many thanks!
##### 1 个评论显示 -1更早的评论隐藏 -1更早的评论
Rik 2019-2-7
The colors in Matlab are generally 8bit, meaning that the colors are scale 0-255. So I don't know what you would mean by converting.

### 采纳的回答

As Rik Wisselink mentioned, RGB values are scaled to 0-255 (8 bit means 2^8 which equal 256). Matlab normalizes each RGB value to this 256 range. So a value of 0.5 means 50% of the 256 range.
For example, the color crimson is represented as [0.85938 0.078125 0.23438]. When you multiply this by 256,
[0.85938 0.078125 0.23438] * 256
ans =
[ 220 20 60]
Likewise, if you have an RBG value of [0, 250, 100], matlab will represent it as
[0, 250, 100] / 256
ans =
[ 0 0.97656 0.39063]
[UPDATE]
Scaling by 255 makes more sense than by 256 for reasons explained in the comment section below.
##### 5 个评论显示 3更早的评论隐藏 3更早的评论
Stephen23 2019-2-8

@ Adam Danz & Image Analyst: errrr... why divide by 256?
Why not just divide by 255 (that being the maximum value per channel, and is exactly what MATLAB's inbuilt functions do, e.g. im2double)? Is there a secret reason why you want to scale the colors a smidgen darker, and totally ignore white?
>> im2double(uint8(255)) % correct scaling
ans = 1
>> 255/255 % correct scaling
ans = 1
ans = 0.99609
which explains:
"Conversely, divide by 255 after converting a uint8 RGB image to double:"
RGB64 = double(RGB8)/255
That's a good point and the better scaler is 255 for that reason.
The rgb() FEX function scales all values < 240 using 256 and then essentially scales values 241:255 using 255. The author notes that scaling by 256 more often gives rounder numbers such as [0 128 0] / 256 = [0 .5 0] but that rarely matters.

### 更多回答（2 个）

some functions like plot use color intensity values (between 0 and 1) to represent RGB values, instead of what you are used to and is used in web browsers (values between 0 and 255).
you can just take your RGB vector and divide it by 255
also I found this rgb function very useful
##### 1 个评论显示 -1更早的评论隐藏 -1更早的评论
Stephen23 2019-2-8
+1 at least someone got the scaling right.

Walter Roberson 2019-2-7
uint8() the decimal values to get something that MATLAB will understand.

### 类别

Help CenterFile Exchange 中查找有关 Printing and Saving 的更多信息

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!