Questions about the rgb2gray function

4 ビュー (過去 30 日間)
志远 任
志远 任 2022 年 9 月 10 日
コメント済み: 志远 任 2022 年 9 月 10 日
I am trying to convert the RGB pixel (120, 119, 112) to gray pixel, When using the conversion equation '0.299 * R + 0.587 * G + 0.114 * B' provided by the function document, as following codes shows,
uint8(120 * 0.2989 +119 * 0.587 + 112 * 0.114)
the results is 118. But when using rgb2gray function as follows,
im2gray(aa) % aa is a 1x1x3 matrix [120, 119, 112]
the results is 119.
Does anyone knows why? Thanks!

採用された回答

Stephen23
Stephen23 2022 年 9 月 10 日
編集済み: Stephen23 2022 年 9 月 10 日
"does anyone know why?"
The values shown in the documentation are shown only to 3 decimal places.
The actual values used for the conversion are:
format long G
M = inv([1,0.956,0.621;1,-0.272,-0.647;1,-1.106,1.703]); % inv of YIQ->RGB
C = M(1,:).' % the actual values
C = 3×1
0.298936021293775 0.587043074451121 0.114020904255103
[120,119,112]*C
ans =
118.500789691508
im2gray(cat(3,120,119,112)/255)*255
ans =
118.500789691508
And if you are wondering where that matrix comes from, take a look at the conversions here:
  1 件のコメント
志远 任
志远 任 2022 年 9 月 10 日
That's really helpful, thanks a lot!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by