20 lines
550 B
Text
20 lines
550 B
Text
using Color, Images, FixedPointNumbers
|
|
|
|
const M_RGB_Y = reshape(Color.M_RGB_XYZ[2,:], 3)
|
|
|
|
function rgb2gray(img::Image)
|
|
g = red(img)*M_RGB_Y[1] + green(img)*M_RGB_Y[2] + blue(img)*M_RGB_Y[3]
|
|
g = clamp(g, 0.0, 1.0)
|
|
return grayim(g)
|
|
end
|
|
|
|
function gray2rgb(img::Image)
|
|
colorspace(img) == "Gray" || return img
|
|
g = map((x)->RGB{Ufixed8}(x, x, x), img.data)
|
|
return Image(g, spatialorder=spatialorder(img))
|
|
end
|
|
|
|
ima = imread("grayscale_image_color.png")
|
|
imb = rgb2gray(ima)
|
|
imc = gray2rgb(imb)
|
|
imwrite(imc, "grayscale_image_rc.png")
|