📜  如何使用 MATLAB 将 YIQ 图像转换为 RGB 图像?

📅  最后修改于: 2022-05-13 01:55:33.651000             🧑  作者: Mango

如何使用 MATLAB 将 YIQ 图像转换为 RGB 图像?

将图像从一种颜色空间转换为另一种颜色空间是图像处理中的一个便捷过程,通过选择最准确的颜色空间来处理图像,它提供了便利并简化了整个过程。 YIQ 颜色空间,顾名思义,由三个分量组成,即亮度 (Y)、同相 (I) 和正交 (Q)。

每个组件的简要说明如下。

  • Luma (Y) :这描述了图像的亮度。这些值位于 [0,1] 的范围内,其中 0 对应于黑色,1 对应于白色。随着 Y 值的增加,图像中的颜色会增加。
  • In-Phase(I):这个组件给出了关于图像中橙色和蓝色色调数量的概念。该度量的范围是 [-0.5959, 0.5959],其中负值对应于图像中的蓝色调,正值对应于图像中的橙色调。颜色的饱和度与 I 值成正比。
  • Quadrature(Q):与 I 分量类似,Q 分量给出关于图像中存在的绿色和紫色色调的度量。正交位于 [-0.5229, 0.5229] 的范围内,其中负值对应于图像中的绿色色调,正值对应于图像中的紫色色调。颜色的饱和度与 Q 的大小成正比。
  • 图像处理工具箱的 ntsc2rgb()函数将用于将图像从 YIQ 颜色空间转换为 RGB 颜色空间。

方法:

  • 使用 imread()函数读取 YIQ 格式的输入图像。 MATLAB 中的 imread()函数允许用户启用读取操作以进行处理。
  • 使用上述函数将图像从一种颜色空间转换为另一种颜色空间
  • 使用 imshow()函数将两个图像一起显示以进行观察。 MATLAB 中的 imshow()函数允许用户启用显示/显示操作以显示图像。

我们将使用内置的 MATLAB 图像进行说明。如果用户希望使用任何其他图像,那么需要检查的一个重要事项是图像的目录和 MATLAB 代码是否相同,否则会显示错误提示。以极客为极客的标志也说明了这种类型的一个例子。

以下示例中使用的图像是灯塔。这些图像已经在 RGB 颜色空间中,因此出于测试目的,我们将转换为 YIQ,并将其用作新输入,我们会将它们转换回 YIQ。 YIQ 格式的默认图像数量很少,因为不常用颜色空间。

示例 1:

Matlab
% MATLAB code for convert images in YIQ format
% Reading the Original image and
% converting to YIQ format.
% This YIQ format image will be
% effectively used as input.
% Make sure the image file path is in
% the same directory as code.
I = imread('GFG.jpeg');
J = rgb2ntsc(I);
 
% Creating figure window for the input image
% Displaying the input image
figure;
imshow(J);
 
% Converting YIQ to RGB
K = ntsc2rgb(J);
 
% Displaying the RGB Image
figure;
imshow(K);


Matlab
% MATLAB code
% Reading the Original image and converting
% to YIQ format. This YIQ format image will
% be effectively used as input.
I = imread('lighthouse.png');
J = rgb2ntsc(I);
 
% Creating figure window for the input image
% Displaying the input image
figure;
imshow(J);
 
% Converting YIQ to RGB
K = ntsc2rgb(J);
 
% Displaying the RGB Image
figure;
imshow(K);



输出:

图 1:YIQ 颜色空间中的输入图像

图 2:RGB 颜色空间中的输出图像

示例 2:

MATLAB

% MATLAB code
% Reading the Original image and converting
% to YIQ format. This YIQ format image will
% be effectively used as input.
I = imread('lighthouse.png');
J = rgb2ntsc(I);
 
% Creating figure window for the input image
% Displaying the input image
figure;
imshow(J);
 
% Converting YIQ to RGB
K = ntsc2rgb(J);
 
% Displaying the RGB Image
figure;
imshow(K);

图 3:YIQ 颜色空间中的输入图像

图 4:RGB 颜色空间中的输出图像

代码说明:

  • I = imread('lighthouse.png');此行读取灯塔的图像并将其存储在变量 I
  • J = rgb2ntsc(I);该行将图像转换为 YIQ 颜色空间并将其分配给变量 J ad ,此后将用作输入图像。
  • 数字;这将创建一个显示图像的窗口。这个特定的图形窗口将用于显示输入图像。
  • 显示(J);这行代码在上面定义的图形窗口中显示图像 J。
  • K = ntsc2rgb(J);此行使用 MATLAB 中的 ntsc2rgb()函数使用数学形态学运算将 YIQ 图像转换为 RGB 图像。
  • 数字;这将创建一个显示图像的窗口。这个特定的图形窗口将用于显示输出图像。
  • 显示(K);这行代码在上面定义的图形窗口中显示图像 K。因此,我们现在有两个并排的图形窗口,可以同时观察图像在不同颜色空间中定义时的差异。

这样我们就完成了将图像从 YIQ 颜色空间转换为 RGB 颜色空间的任务。