zoukankan      html  css  js  c++  java
  • 【Matlab图像处理】学习笔记:读取16进制RGB文档转为彩色图片

    在JPEG解码中对JPG图片进行了解码,解码的数据分为RGB三色,这三色数据(16进制)存放在3个文件中red.dat,green.dat,blue.dat;用matlab把这3色数据复原成图像。

    这里仅对红色处理,其他两种颜色的处理方法类似。

    这里解码的是一幅1080*1920的jpg图片。

    red.dat文件中存放的是16进制的数据

    格式如上图,这里只列了12个数据,总共有1080*1920个数据。

    Matlab源程序如下

    rgb
     1 clear;
    2 RGB=imread('blank.jpg');
    3 red=zeros(1080,1920);
    4 a=textread('red.dat','%s')';
    5 b=hex2dec(a);
    6 c=uint8(b);
    7 for i=1:1080
    8 for j=1:1920
    9 m=1920*(i-1)+j;
    10 red(i,j)=c(m);
    11 end
    12 end
    13
    14 RGB(:,:,1)=red;
    15 RGB(:,:,2)=0;
    16 RGB(:,:,3)=0;
    17 jpeg=imread('picture.jpg');
    18 subplot(1,2,1),imshow(jpeg);
    19 subplot(1,2,2),imshow(RGB);


    第2行:blank.jpg是一幅1080*1920的空图像。

    第3行:建立一个二维数组red用来保存R的值。

    第4行:读取16进制的red.dat文件中的数据放到a中。

    第5行:16进制转化为10进制。

    第7-12行:读取的数据放到二维数组red中。

    第14行:设置红色分量。

    第15行:设置绿色分量,这里设为0;

    第16行:设置蓝色分量,这里设为0;

    第17行:读取原始图像。

    第18-19行:显示原始图像和解码之后的只含红色分量的图像。

    运行结果:

    左边的为原始图像,右边的为解码之后的只含红色分量的图像。

  • 相关阅读:
    poj 2155 B
    hdu 1556 A
    hdu 1556 A
    #366 A-C
    最长上升子序列
    Codeforces Div3 #501 A-E(2) F以后补
    字典的建立 查找
    字典序大小
    头文件模板
    01背包模板 及 优化
  • 原文地址:https://www.cnblogs.com/tony1224/p/2427891.html
Copyright © 2011-2022 走看看