Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在Matlab中将灰度图像转换为彩色图像_Image_Matlab_Image Processing - Fatal编程技术网

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 do
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颜色空间和转换为灰度图像,然后尝试并找出您需要做的事情。