MATLAB

您所在的位置:网站首页 rgb与yuv转换矩阵 MATLAB

MATLAB

2023-08-26 01:20| 来源: 网络整理| 查看: 265

另外YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式,需要将RGB格式转为YUV格式。而当图像进行后期显示时,又需要将YUV转换为RGB域。

2 RGB格式转为YUV格式转换公式

  

  将上述矩阵乘法展开,YUV(256 级别) 可以从8位 RGB 直接计算如下:

  Y = 0.299 R + 0.587 G + 0.114 B

  U = - 0.1687 R - 0.3313 G + 0.5 B + 128

  V = 0.5 R - 0.4187 G - 0.0813 B + 128 

3 YUV格式转为RGB格式转换公式

  

  将上述矩阵乘法展开,8位RGB可以从YUV(256级别) 直接计算如下:

  R = Y + 1.402 (V-128)

  G = Y - 0.34414 (U-128) - 0.71414 (V-128)

  B = Y + 1.772 (U-128)

4 RGB格式转为YCbCr格式转换公式

  YCbCr格式是基于YUV格式的一个偏移,具体转换如下:

  Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16   Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128   Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128

5 RGB格式转为YCbCr格式转换公式

  转换格式如下:

  R' = 1.164*(Y’-16) + 1.596*(Cr'-128)   G' = 1.164*(Y’-16) - 0.813*(Cr'-128) -0.392*(Cb'-128)

      B' = 1.164*(Y’-16) + 2.017*(Cb'-128)

clc 清空命令区域

clear 清空工作区

clear all 清空工作区与全局变量

close 关闭当前窗口

close all 关闭所有窗口

这几条命令一般写在代码的开头,用来清空或关闭之前操作残留的窗口和命令。

合成和提取RGB的三个分量

fR、fG、fB分别表示RGB三个分量的图像。一副RGB图像可以利用cat(级联)操作符合成彩色图像。

rgb_image = cat(3, fR, fG, fB)

提取三个分量

fR = RGB(:, :, 1);   红色分量

fG = RGB(:, :, 2);   绿色分量

fB = RGB(:, :, 3);   蓝色分量

size()函数得到图片的行列数

[ROW, COL,DIM] =    size(R_data); 得到一副图像的行列数。

显示图片

figure, imshow(imag) 保存第一幅图像并同时显示第二幅图像。

显示图片用imshow()函数,前面加个figure; 可以在原来显示的基础上重新打开一个窗口显示。

生成矩阵函数

zeros函数——生成零矩阵

ones函数——生成全1阵

【zeros的使用方法】

B=zeros(n):生成n×n全零阵。

B=zeros(m,n):生成m×n全零阵。

B=zeros([m n]):生成m×n全零阵。

B=zeros(d1,d2,d3……):生成d1×d2×d3×……全零阵或数组。

B=zeros([d1 d2 d3……]):生成d1×d2×d3×……全零阵或数组。

B=zeros(size(A)):生成与矩阵A相同大小的全零阵。

【ones的使用方法】

ones的使用方法与zeros的使用方法类似。

clc clear all close all img =imread('test.jpg'); R_data = img(:,:,1); G_data = img(:,:,2); B_data = img(:,:,3); [row,col,dep]=size(img);%匹配行列数 Gray_data =img; YCbCr =img; YUV =img; Y_data =zeros(row,col); Cb_data=zeros(row,col); Cr_data=zeros(row,col); Y1_data =zeros(row,col); U_data=zeros(row,col); V_data=zeros(row,col); %rgb转ycbcr for r =1:row for c =1:col Y_data(r, c) = 0.299*R_data(r, c) + 0.587*G_data(r, c) + 0.114*B_data(r, c); Cb_data(r, c) = -0.172*R_data(r, c) - 0.339*G_data(r, c) + 0.511*B_data(r, c) + 128; Cr_data(r, c) = 0.511*R_data(r, c) - 0.428*G_data(r, c) - 0.083*B_data(r,c)+ 128; end end %rgb转yuv for r =1:row for c =1:col Y1_data(r, c) = 0.183*R_data(r, c) + 0.614*G_data(r, c) + 0.062*B_data(r, c)+16; U_data(r, c) = -0.101*R_data(r, c) - 0.338*G_data(r, c) + 0.439*B_data(r, c) + 128; V_data(r, c) = 0.439*R_data(r, c) - 0.399*G_data(r, c) - 0.040*B_data(r,c)+ 128; end end YCbCr(:,:,1)=Y_data; YCbCr(:,:,2)=Cb_data; YCbCr(:,:,3)=Cr_data; YUV(:,:,1)=Y1_data; YUV(:,:,2)=U_data; YUV(:,:,3)=V_data; Gray_data(:,:,1)=Y_data; Gray_data(:,:,2)=Y_data; Gray_data(:,:,3)=Y_data; figure, subplot(221),imshow(img),title('img'); subplot(222),imshow(Gray_data),title('Gray'); subplot(223),imshow(YUV),title('YUV'); subplot(224),imshow(YCbCr),title('YCbCr'); disp('=================转换完成===============')

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3