Digital Image Processing(DIP)笔记(第一章)

有些话、适合烂在心里 提交于 2020-02-19 23:15:18

1.2图像存储格式

  • 分辨率

    • 空间分辨率: 物理1meter占几个像素

    • 灰度级分辨率:一个像素占的二进制位数

  • 灰度图像

    • RGB三种像素值相等, 构成颜色表(索引表,列为0-255,行为RGB大小)

    • 像素值就是索引号, 有2^8个

    • 0黑色 255白色

  • 彩色图

    • 真彩24位, 2^24种颜色, 没有索引表

      • 每个分量占8位,RGB共24位

      • 有3个矩阵, 每个矩阵的元素仍是8位

    • 伪彩色8位, 256色, 有索引表,

      • 在灰度图基础上让RGB三个分量不等即可, 只有一个矩阵即颜色表

    • RGB分量像素值不等

      • 伪彩色中: R255红, G255绿B255蓝

  • 位图常见格式

    • BMP, bitMap格式位图格式

    • GIF<Graphics InterchaFormat>

      • 交流传输, 不作为文件存储格式

      • max 64M, 256色

    • TIFF<Tagged Image FormatFile>

      • 复杂文件,丰富的扩展性可修改性

      • 不通用不常见很少用

    • JPEG<Joint Photographic Expert Group>

  • 总结:按照颜色深度分类

    • 黑白图像

    • 8位索引图象

      • 8位灰度图像

      • 8位伪彩色图像   

    • 24位真彩图像

1.5 BMP 文件存储格式

  • BMP文件组成

    1. 文件头 BITMAPFILEHEADER

    2. 信息头 BITMAPINFOHEADER

    3. 颜色表 RGBQUAD

    4. 像素数据DATA

/****存储BMP文件格式****/

//FILE头文件占2+4+2+2+4=14个字节
typedef struct tagBITMAPFILEHEADER
{
    WORD bfTYPE;     //word为字类型,2字节大小, 语句功能: 文件标识,前两个字节为BM就go on
    DWORD bfSize;    //BMP文件大小
    WORD bfReserved1;
    WORD bfReserved2;  //保留字均置0
    DWORD bfoffBits;   //“bfOffBits是从位图文件头到位图数据的偏移量”指的就是,位图头信息(BITMAPFILEHEADER)+位图信息头(BITMAPINFOHEADER)+全部颜色对照表(RGBQUAD)的字节数。
}BITMAPFILEHEADER;

//INFO占40个字节
typedef struct tagBITMAPINFOHEADER
{
    DWORD biSize;        //结构大小,即40(十)
    LONG biWidth;        //32位系统4字节, 宽度(像素点)
    LONG biHeight;        //高度
    WORD biPlanes;        //1;
    WORD biBitCount;        //每像素位数
    DWORD biCompression;    //压缩类型,取0;
    DWORD biSizeImage;        //整个位图大小
    LONG biXpelsPerMeter;        //水平分辨率
    LONG biYpelsPerMeter;        //垂直分辨率
    DWORD biClrUsed;           //图像使用的像素数
    DWORD biClrImportant;        //图像中重要的颜色数
}BITMAPINFOHEADER;

//RGBQUAD占4个字节
typedef struct tagRGBQUAD
{
    BYTE rgbBlue;
    BYTE rgbGreen;
    BYTE rgbRed;
    BYTE rgbReserved;
}RGBQUAD;


//显示BMP图像的某参数结构
struct tagBITMAPINFO
{
    BTIMAPINFOHEADER bmiHeader;
    RGBQUAD bmiColorsp[1]; //颜色表
}BITMAPINFO;

 

扩展:MATLAB 初步实现照片的显示和色彩变幻

close all;
clear all;
clc;
X=imread('test.jpg');    %读取文件,注意字符串应在项目文件夹内
I=rgb2gray(X);    %rgb2gray就是rgb to gray把rgb改为灰度图
set(0,'defalutFigurePosition', [100, 100, 1000,500]);    %p1p2是窗口左上角位置, p3p4是行列数

set(0, 'defaultFigureColor', [0, 0, 0]);    %窗口颜色, 矩阵为RGB像素值
subpolt(1,2,1), imshow(X);    %subplot创建1行2列窗口, 位置在窗口第一个显示X
subplot(1,2.2), imshow(I);    

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!