利用MATLAB将R,G,B通道的像素值转换为图片 硬件开发通常会发生R,G,B为了检查三个通道的像素值是否正确 ,我们通常使用它MATLAB代码还原成图像。
MATLAB代码如下:
%% 读入R通道16进制数据 fid_r = fopen('路径\r.txt', 'r '); if fid_r == -1 disp('fopen failed'); else r_hex = textscan(fid_r,'%s'); end fclose(fid_r); %% 阅读G通道16进制数据 fid_g = fopen('路径\g.txt', 'r '); if fid_g == -1 disp('fopen failed'); else g_hex = textscan(fid_g,'%s'); end fclose(fid_g); %% 阅读B通道16进制数据 fid_b = fopen('路径\b.txt', 'r '); if fid_b == -1 disp('fopen failed'); else b_hex = textscan(fid_b,'%s'); end fclose(fid_b); %% 从R通道元组中读出16进制数并转换为十进制无符号数据 for i=1:length(r_hex{
1})
r_dec(i) = hex2dec(r_hex{
1}{
i});
end
%% 从G通道元胞数组中读出16进制数,并转换为十进制无符号数据
for i=1:length(g_hex{
1})
g_dec(i) = hex2dec(g_hex{
1}{
i});
end
%% 从B通道元胞数组中读出16进制数,并转换为十进制无符号数据
for i=1:length(b_hex{
1})
b_dec(i) = hex2dec(b_hex{
1}{
i});
end
%% 将矩阵由1维变为1920行 * 1080列
r_trans_dimens = reshape(r_dec,1920,1080);
g_trans_dimens = reshape(g_dec,1920,1080);
b_trans_dimens = reshape(b_dec,1920,1080);
%% 将R,G,B三个通道的数据矩阵进行转置,变为1080行 * 1920列
r_transpose = r_trans_dimens.';
g_transpose = g_trans_dimens.';
b_transpose = b_trans_dimens.';
%% R,G,B三个通道的数据合在一起
RGB(:,:,1) = r_transpose;
RGB(:,:,2) = g_transpose;
RGB(:,:,3) = b_transpose;
%% 数据归一化,使矩阵的每个元素的值都在0和1之间
rgb = mat2gray(RGB);
%% 显示转换后的图片
imshow(rgb);
%% 保存转换后的图片
imwrite(rgb, '路径\rgb.png');
利用MATLAB将RGB数值还原为图像的效果如下图所示。