Image 在Matlab中将灰度图像转换为彩色图像
我使用以下代码行将彩色图像转换为灰度图像:Image 在Matlab中将灰度图像转换为彩色图像,image,matlab,image-processing,Image,Matlab,Image Processing,我使用以下代码行将彩色图像转换为灰度图像: clc; clear all; close all; [FileName,PathName] = uigetfile('*.jpg','Select the Cover Image'); file = fullfile(PathName,FileName); disp(['User selected : ', file]); cover = imread(file); %cover = double(cover); figure; subplot(
clc;
clear all;
close all;
[FileName,PathName] = uigetfile('*.jpg','Select the Cover Image');
file = fullfile(PathName,FileName);
disp(['User selected : ', file]);
cover = imread(file);
%cover = double(cover);
figure;
subplot(1,2,1);
imshow(uint8(cover),[]);
title('Cover image');
red = cover(:,:,1);
green = cover(:,:,2);
blue = cover(:,:,3);
a = zeros(size(cover, 1), size(cover, 2));
just_red = cat(3, red, a, a);
figure, imshow(just_red);
just_green = cat(3, a, green, a);
figure, imshow(just_green);
just_blue = cat(3, a, a, blue);
figure, imshow(just_blue);
[r1 r2 a] = size(just_red);
disp(a); disp(r1); disp(r2);
coverbw = rgb2gray(cover);
original = gray2rgb(coverbw);
figure, imshow(original);
将原始图像转换为灰度后,我想将灰度图像转换回原始彩色图像。我尝试使用以下代码行来完成此工作:
original = gray2rgb(coverbw);
但我得到了以下错误:
??? Undefined function or method 'gray2rgb' for input arguments of type 'uint8'.
Error in ==> main at 35
original = gray2rgb(coverbw);
有人能帮我从灰度版(即coverbw
)中获取原始图像,而不是将红色、绿色和蓝色图像的三个独立分量组合起来吗
谢谢。将RGB图像转换为灰色时,会丢失每像素的颜色信息。
每像素
I,j的灰度值I
由以下公式确定:
I(i,j) = 0.299*R(i,j) + 0.587*G(i,j) + 0.114*B(i,j)
从数学上讲,这意味着如果你知道R,G
和B
,你就可以确定I
但是,如果你只知道I
,你就不能恢复R
、G
和B
,因为你有一个含有三个未知量的方程,因此可以有无限多个可能的颜色组合来产生相同的强度I
如果您正在对2D图像进行置乱,则可以将每个通道R
、G
和B
视为独立的2D信号,对每个通道进行置乱,然后通过
rgb = cat(3, recoveredR, recoveredG recoveredB );
将RGB图像转换为灰色时,会丢失每像素的颜色信息。
每像素I,j的灰度值I
由以下公式确定:
I(i,j) = 0.299*R(i,j) + 0.587*G(i,j) + 0.114*B(i,j)
从数学上讲,这意味着如果你知道R,G
和B
,你就可以确定I
但是,如果你只知道I
,你就不能恢复R
、G
和B
,因为你有一个含有三个未知量的方程,因此可以有无限多个可能的颜色组合来产生相同的强度I
如果您正在对2D图像进行置乱,则可以将每个通道R
、G
和B
视为独立的2D信号,对每个通道进行置乱,然后通过
rgb = cat(3, recoveredR, recoveredG recoveredB );
您希望如何从灰度图像中恢复丢失的颜色信息?实际上,我正在进行图像置乱的arnold变换。该代码适用于二维图像。在解密原始图像后,我得到一个灰度图像。但是,我想要一个彩色图像。是否可以从我以红色、绿色和蓝色保存的信息中为灰度图像添加颜色?@Shai,我正在以红色、绿色和蓝色数组保存图像信息。。你能帮我恢复颜色吗?你希望如何从灰色图像中恢复丢失的颜色信息?实际上,我正在做图像置乱的arnold变换。该代码适用于二维图像。在解密原始图像后,我得到一个灰度图像。但是,我想要一个彩色图像。是否可以从我以红色、绿色和蓝色保存的信息中为灰度图像添加颜色?@Shai,我正在以红色、绿色和蓝色数组保存图像信息。。你能帮我恢复颜色吗?@competingh你可以做rgb=just_red+just_green+just_blue代码>根据您在问题中构建这些数组的方式。关于使用代码rgb=cat(3,recoveredR,recoveredG recoveredB)代码>我收到以下错误:???在114个不支持的维度上使用==>imageDisplayValidateParams>ValidateData时出错
。。你能帮我吗??我对这个尺寸误差感到困惑。。我拿不到。@Competingh您正在使用的组件R
G
B
的尺寸是多少?它们是2D还是3D阵列?是否可以将存储的彩色图像的三个组成部分添加到灰度图像中??是否可以叠加4幅图像(红色、绿色、蓝色和灰度)以获得原始图像?@Competingh如果它们是3D阵列,那么它们的大小应该是[128 128 3]
,而不是[128 128]
。请花一点时间仔细阅读RGB颜色空间和灰度图像的转换,然后试着找出您需要做什么。@Competingh you can doRGB=just_red+just_green+just_blue代码>根据您在问题中构建这些数组的方式。关于使用代码rgb=cat(3,recoveredR,recoveredG recoveredB)代码>我收到以下错误:???在114个不支持的维度上使用==>imageDisplayValidateParams>ValidateData时出错
。。你能帮我吗??我对这个尺寸误差感到困惑。。我拿不到。@Competingh您正在使用的组件R
G
B
的尺寸是多少?它们是2D还是3D阵列?是否可以将存储的彩色图像的三个组成部分添加到灰度图像中??是否可以叠加4幅图像(红色、绿色、蓝色和灰度)以获得原始图像?@Competingh如果它们是3D阵列,那么它们的大小应该是[128 128 3]
,而不是[128 128]
。请花一点时间仔细阅读RGB颜色空间和转换为灰度图像,然后尝试并找出您需要做的事情。