数字图像处理-1-DDB,DIB以及Bitmap

DDB,DIB以及bitmap

  • 背景
  • 1.DDB
  • 2.DIB
  • 3.Bitmap的结构
    • [3.1 Bitmap文件头](#3.1 Bitmap文件头)
    • [3.2 Bitmap信息头](#3.2 Bitmap信息头)
    • [3.3 颜色表](#3.3 颜色表)
    • [3.4 位图数据](#3.4 位图数据)
  • [4. 位图实验](#4. 位图实验)
    • [4.1 实验1(分辨率15x16)](#4.1 实验1(分辨率15x16))
    • [4.2 实验2(分辨率16x16)](#4.2 实验2(分辨率16x16))

背景

之前学习过 杨淑莹老师的-<<VC++图像处理程序设计>>,当时只是把视频教程看了一遍,没有做一些实验,根基不牢.后续会根据杨老师的教程,把该做的实验都做一遍. 关于图像处理方面,虽然现在已经都是深度学习,大语言模型了,但这里我觉得还是有必要记录一下.

1.DDB

DDB 全称device dependent bitmap,即设备有关的位图,DDB数据本身不带颜色信息,颜色信息和具体的显示设备有关.我的理解是DDB数据存放的是颜色的索引信息,在不同设备上存在不同的调色板,然后根据颜色的索引,从调色板中找到颜色信息,所以这个颜色是和具体设备有关的.

比如:

一个2 x 2的DDB数据为

22, 33

12, 38

那么在不同设备上的调色板dev1colorTable[255], dev2ColorTable[255],这2个调色板中保存是相关设备的颜色信息,他们应该是不同的,所以同一个索引,在不同索引下可能得到不同的颜色信息.

2.DIB

DIB全称是device independent bitmap,即设备无关位图. 为什么无关呢.主要是因为这种位图数据中包含了颜色信息.针对于非真彩色的图片(24bit),它的图像中是带有颜色表信息的,后面会有实验做详细介绍的.

3.Bitmap的结构

Bitmap图像文件一般包含如下4个部分

  • Bitmap文件头
  • Bitmap图像信息头
  • 颜色表
  • 图像数据

后续的实验都会用bitmap来演示

3.1 Bitmap文件头

注意:

  • WORD:2个bytes,
  • DWORD:4bytes,

下面是BItmap文件头的信息,其中包含文件类型,必须是"BM"(图中有错误 )

3.2 Bitmap信息头

这部分包含了位图相关的一些属性,包含图像宽,高,大小,以及像素的bitcount.

3.3 颜色表

注意只有非真彩(非24bit)的图像有颜色表,真彩图像因为已经是24bit的RGB数据,它已经不需要颜色信息了.

3.4 位图数据

在文件最后是位图数据部分,这里特别要注意的是一个byte代表几个像素. 关于这个要从bitCount中获取信息了.

不同的bitCount,每个byte对应不同数量的像素

  • 当上面biBitCount为1时,表示8个像素占用1个字节,其实这种情况下,位图就是单色图,或二值图
  • 当上面biBitCount为4时,表示2个像素占用1个字节
  • 当上面biBitCount为8时,表示1个像素占用1个字节
  • 当上面biBitCount为24时,表示1个像素占用3个字节

4. 位图实验

这里我用AI写了一个python脚本,用来解析bitmap图像的信息

4.1 实验1(分辨率15x16)

  • 原始图像: 这个图像是一个15x16的闹钟的图片.
  • windows位图信息:
    从下面能够获取到图片大小为246,分辨率为15x16(宽高)
  • 解析结果:
    这个解析脚本可以解析文件头,bitmap信息头,颜色表以及图像数据.最后会打印出图像数据
xml 复制代码
--- 开始解析 BMP 文件: .\Icons\Alarm.bmp --- \
	
	--- BMP File Header (文件头) ---
	  Signature (文件标识): BM (b'BM')
	  File Size (文件大小): 246 bytes (0xf6)
	  Reserved1 (保留字段1): 0 (0x0)
	  Reserved2 (保留字段2): 0 (0x0)
	  Data Offset (数据偏移): 118 bytes (0x76)
	
	--- BMP Info Header (信息头) ---
	  Header Size (信息头大小): 40 bytes (0x28)
	  Width (图像宽度): 15 pixels
	  Height (图像高度): 16 pixels
	  Planes (颜色平面): 1
	  Bits Per Pixel (位深度): 4 bit(s)
	  Compression (压缩方式): BI_RGB (不压缩)
	  Image Size (图像数据大小): 128 bytes (0表示未压缩或需计算)
	  X Pixels Per Meter (水平分辨率): 2850 ppm
	  Y Pixels Per Meter (垂直分辨率): 2850 ppm
	  Colors Used (使用颜色数): 16
	  Important Colors (重要颜色数): 16
	
	--- BMP Color Palette (颜色表) ---
	  预期颜色表项数 (根据位深): 16
	  实际颜色表项数 (由Header指定): 16
	    [000] RGB(  0,   0,   0) - Raw: (00 00 00 00)
	    [001] RGB(128,   0,   0) - Raw: (00 00 80 00)
	    [002] RGB(  0, 128,   0) - Raw: (00 80 00 00)
	    [003] RGB(128, 128,   0) - Raw: (00 80 80 00)
	    [004] RGB(  0,   0, 128) - Raw: (80 00 00 00)
	    [005] RGB(128,   0, 128) - Raw: (80 00 80 00)
	    [006] RGB(  0, 128, 128) - Raw: (80 80 00 00)
	    [007] RGB(127, 127, 127) - Raw: (7f 7f 7f 00)
	    [008] RGB(191, 191, 191) - Raw: (bf bf bf 00)
	    [009] RGB(255,   0,   0) - Raw: (00 00 ff 00)
	    [010] RGB(  0, 255,   0) - Raw: (00 ff 00 00)
	    [011] RGB(255, 255,   0) - Raw: (00 ff ff 00)
	    [012] RGB(  0,   0, 255) - Raw: (ff 00 00 00)
	    [013] RGB(255,   0, 255) - Raw: (ff 00 ff 00)
	    [014] RGB(  0, 255, 255) - Raw: (ff ff 00 00)
	    [015] RGB(255, 255, 255) - Raw: (ff ff ff 00)
	
	--- BMP Bitmap Data (位图数据) ---
	  当前文件指针位置: 118 bytes
	  声明的数据偏移量: 118 bytes
	  文件指针已位于位图数据起始处。
	  剩余待读取数据大小: 128 bytes
	  计算的扫描线大小 (含填充): 8 bytes
	  计算的总数据大小: 128 bytes
	
	  数据内容 (按每行16个字节显示):
	    00000076: 30 01 30 00 00 31 00 33 33 10 00 90 90 00 13 33  | b'0\x010\x00\x001\x0033\x10\x00\x90\x90\x00\x133'
	    00000086: 33 00 98 f0 f8 90 03 33 37 09 80 ff f0 89 07 33  | b'3\x00\x98\xf0\xf8\x90\x0337\t\x80\xff\xf0\x89\x073'
	    00000096: 30 99 ff 0f ff f9 90 33 30 90 ff f0 ff 00 90 33  | b'0\x99\xff\x0f\xff\xf9\x9030\x90\xff\xf0\xff\x00\x903'
	    000000a6: 30 99 ff f0 ff f9 90 33 37 09 80 f0 f0 89 07 3c  | b'0\x99\xff\xf0\xff\xf9\x9037\t\x80\xf0\xf0\x89\x07<'
	    000000b6: 33 00 98 f0 f8 90 03 30 00 00 09 99 99 00 00 03  | b'3\x00\x98\xf0\xf8\x90\x030\x00\x00\t\x99\x99\x00\x00\x03'
	    000000c6: 08 87 00 00 00 08 77 03 08 88 87 70 78 88 87 03  | b'\x08\x87\x00\x00\x00\x08w\x03\x08\x88\x87px\x88\x87\x03'
	    000000d6: 30 78 80 70 70 88 70 33 33 70 03 30 33 00 73 33  | b'0x\x80pp\x88p33p\x0303\x00s3'
	    000000e6: 33 33 33 00 03 33 33 33 33 33 33 33 33 33 33 33  | b'333\x00\x0333333333333'
	
	--- BMP Decoded Pixels (解码后的像素) ---
	  使用颜色表解析 15x16 像素数据...
	  总共解析出 240 个像素索引。
	  按 15x16 布局打印 (注意BMP图像通常从底部开始存储):
	  Row   0: [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0]
	  Row   1: [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0] [128,128,  0]
	  Row   2: [128,128,  0] [128,128,  0] [127,127,127] [  0,  0,  0] [  0,  0,  0] [128,128,  0] [128,128,  0] [  0,  0,  0] [128,128,  0] [128,128,  0] [  0,  0,  0] [  0,  0,  0] [127,127,127] [128,128,  0] [128,128,  0]
	  Row   3: [128,128,  0] [  0,  0,  0] [127,127,127] [191,191,191] [191,191,191] [  0,  0,  0] [127,127,127] [  0,  0,  0] [127,127,127] [  0,  0,  0] [191,191,191] [191,191,191] [127,127,127] [  0,  0,  0] [128,128,  0]
	  Row   4: [  0,  0,  0] [191,191,191] [191,191,191] [191,191,191] [191,191,191] [127,127,127] [127,127,127] [  0,  0,  0] [127,127,127] [191,191,191] [191,191,191] [191,191,191] [191,191,191] [127,127,127] [  0,  0,  0]
	  Row   5: [  0,  0,  0] [191,191,191] [191,191,191] [127,127,127] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [191,191,191] [127,127,127] [127,127,127] [  0,  0,  0]
	  Row   6: [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [255,  0,  0] [255,  0,  0] [255,  0,  0] [255,  0,  0] [255,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0]
	  Row   7: [128,128,  0] [128,128,  0] [  0,  0,  0] [  0,  0,  0] [255,  0,  0] [191,191,191] [255,255,255] [  0,  0,  0] [255,255,255] [191,191,191] [255,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,128,  0] [128,128,  0]
	  Row   8: [128,128,  0] [127,127,127] [  0,  0,  0] [255,  0,  0] [191,191,191] [  0,  0,  0] [255,255,255] [  0,  0,  0] [255,255,255] [  0,  0,  0] [191,191,191] [255,  0,  0] [  0,  0,  0] [127,127,127] [128,128,  0]
	  Row   9: [128,128,  0] [  0,  0,  0] [255,  0,  0] [255,  0,  0] [255,255,255] [255,255,255] [255,255,255] [  0,  0,  0] [255,255,255] [255,255,255] [255,255,255] [255,  0,  0] [255,  0,  0] [  0,  0,  0] [128,128,  0]
	  Row  10: [128,128,  0] [  0,  0,  0] [255,  0,  0] [  0,  0,  0] [255,255,255] [255,255,255] [255,255,255] [  0,  0,  0] [255,255,255] [255,255,255] [  0,  0,  0] [  0,  0,  0] [255,  0,  0] [  0,  0,  0] [128,128,  0]
	  Row  11: [128,128,  0] [  0,  0,  0] [255,  0,  0] [255,  0,  0] [255,255,255] [255,255,255] [  0,  0,  0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,  0,  0] [255,  0,  0] [  0,  0,  0] [128,128,  0]
	  Row  12: [128,128,  0] [127,127,127] [  0,  0,  0] [255,  0,  0] [191,191,191] [  0,  0,  0] [255,255,255] [255,255,255] [255,255,255] [  0,  0,  0] [191,191,191] [255,  0,  0] [  0,  0,  0] [127,127,127] [128,128,  0]
	  Row  13: [128,128,  0] [128,128,  0] [  0,  0,  0] [  0,  0,  0] [255,  0,  0] [191,191,191] [255,255,255] [  0,  0,  0] [255,255,255] [191,191,191] [255,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,128,  0] [128,128,  0]
	  Row  14: [128,128,  0] [128,128,  0] [128,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [255,  0,  0] [  0,  0,  0] [255,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,  0,  0] [128,128,  0] [128,128,  0]
	  Row  15: [128,128,  0] [  0,  0,  0] [  0,  0,  0] [128,  0,  0] [128,128,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,128,  0] [128,  0,  0] [  0,  0,  0] [  0,  0,  0] [128,128,  0]

从上面的解析结果可以获取到图片的bitCount为4 ,即1个byte可以表示2个像素. 那么从最后的图像数据可以验证,最后打印的RGB值是否正确. 这里要特别注意 注意BMP图像通常从底部开始存储.

因为BMP图像是从底部开始存储的,那么最后一个行对应的原始图像数据为:

30 01 30 00 00 31 00 33

上面其实为颜色的索引,因为每个byte对应2个像素,所以分开后为

0x03, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01 0x00 0x00 0x03 0x00

这里最后一个0x00是要舍弃的,因为图像的宽度是15.

因为颜色表如下,结合上面的索引即可得到真实的RGB信息.

复制代码
        [000] RGB(  0,   0,   0) - Raw: (00 00 00 00)
	    [001] RGB(128,   0,   0) - Raw: (00 00 80 00)
	    [002] RGB(  0, 128,   0) - Raw: (00 80 00 00)
	    [003] RGB(128, 128,   0) - Raw: (00 80 80 00)
	    [004] RGB(  0,   0, 128) - Raw: (80 00 00 00)
	    [005] RGB(128,   0, 128) - Raw: (80 00 80 00)
	    [006] RGB(  0, 128, 128) - Raw: (80 80 00 00)
	    [007] RGB(127, 127, 127) - Raw: (7f 7f 7f 00)
	    [008] RGB(191, 191, 191) - Raw: (bf bf bf 00)
	    [009] RGB(255,   0,   0) - Raw: (00 00 ff 00)
	    [010] RGB(  0, 255,   0) - Raw: (00 ff 00 00)
	    [011] RGB(255, 255,   0) - Raw: (00 ff ff 00)
	    [012] RGB(  0,   0, 255) - Raw: (ff 00 00 00)
	    [013] RGB(255,   0, 255) - Raw: (ff 00 ff 00)
	    [014] RGB(  0, 255, 255) - Raw: (ff ff 00 00)
	    [015] RGB(255, 255, 255) - Raw: (ff ff ff 00)

所以最后一行的RGB数据

Row 15: [128,128, 0] [ 0, 0, 0] [ 0, 0, 0] [128, 0, 0] [128,128, 0] [ 0, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [128,128, 0] [128, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [128,128, 0]

4.2 实验2(分辨率16x16)

下面是另外一个位图的信息(16x16),这是为了和上面对比的

  • 原始图像:
    这是一本打开的书籍

  • windows图像属性
    可以看到图像分辨率为16x16,实际大小为246 bytes , 注意这里能看到,虽然分辨率比上面的实验大,但是它俩的数据大小是一样的. 这是因为,在15x16分辨率下,因为最后一列的像素虽然是4bit的数据,但是它也占用1个字节的空间,因而大小和16x16图像的大小是一样的.

  • 解析结果:

    --- 开始解析 BMP 文件: .\Icons\BookOpen.bmp ---

    --- BMP File Header (文件头) ---
    Signature (文件标识): BM (b'BM')
    File Size (文件大小): 246 bytes (0xf6)
    Reserved1 (保留字段1): 0 (0x0)
    Reserved2 (保留字段2): 0 (0x0)
    Data Offset (数据偏移): 118 bytes (0x76)

    --- BMP Info Header (信息头) ---
    Header Size (信息头大小): 40 bytes (0x28)
    Width (图像宽度): 16 pixels
    Height (图像高度): 16 pixels
    Planes (颜色平面): 1
    Bits Per Pixel (位深度): 4 bit(s)
    Compression (压缩方式): BI_RGB (不压缩)
    Image Size (图像数据大小): 128 bytes (0表示未压缩或需计算)
    X Pixels Per Meter (水平分辨率): 2850 ppm
    Y Pixels Per Meter (垂直分辨率): 2850 ppm
    Colors Used (使用颜色数): 16
    Important Colors (重要颜色数): 16

    --- BMP Color Palette (颜色表) ---
    预期颜色表项数 (根据位深): 16
    实际颜色表项数 (由Header指定): 16
    [000] RGB( 0, 0, 0) - Raw: (00 00 00 00)
    [001] RGB(128, 0, 0) - Raw: (00 00 80 00)
    [002] RGB( 0, 128, 0) - Raw: (00 80 00 00)
    [003] RGB(128, 128, 0) - Raw: (00 80 80 00)
    [004] RGB( 0, 0, 128) - Raw: (80 00 00 00)
    [005] RGB(128, 0, 128) - Raw: (80 00 80 00)
    [006] RGB( 0, 128, 128) - Raw: (80 80 00 00)
    [007] RGB(127, 127, 127) - Raw: (7f 7f 7f 00)
    [008] RGB(191, 191, 191) - Raw: (bf bf bf 00)
    [009] RGB(255, 0, 0) - Raw: (00 00 ff 00)
    [010] RGB( 0, 255, 0) - Raw: (00 ff 00 00)
    [011] RGB(255, 255, 0) - Raw: (00 ff ff 00)
    [012] RGB( 0, 0, 255) - Raw: (ff 00 00 00)
    [013] RGB(255, 0, 255) - Raw: (ff 00 ff 00)
    [014] RGB( 0, 255, 255) - Raw: (ff ff 00 00)
    [015] RGB(255, 255, 255) - Raw: (ff ff ff 00)

    --- BMP Bitmap Data (位图数据) ---
    当前文件指针位置: 118 bytes
    声明的数据偏移量: 118 bytes
    文件指针已位于位图数据起始处。
    剩余待读取数据大小: 128 bytes
    计算的扫描线大小 (含填充): 8 bytes
    计算的总数据大小: 128 bytes

    复制代码
    数据内容 (按每行16个字节显示):
      00000076: 33 33 33 33 33 33 33 33 33 33 33 3c 0c 33 33 33  | b'33333333333<\x0c333'
      00000086: 33 33 3c c0 f0 c3 33 33 33 33 c7 0f 0f 0c 33 33  | b'33<\xc0\xf0\xc33333\xc7\x0f\x0f\x0c33'
      00000096: 33 3c 00 ff f0 f0 c3 33 3c c0 ff ff ff 0f 0c 33  | b'3<\x00\xff\xf0\xf0\xc33<\xc0\xff\xff\xff\x0f\x0c3'
      000000a6: c7 0f 0f ff ff f0 f0 c3 00 ff f0 ff ff ff 0f 0c  | b'\xc7\x0f\x0f\xff\xff\xf0\xf0\xc3\x00\xff\xf0\xff\xff\xff\x0f\x0c'
      000000b6: 0f ff ff 0f ff ff f0 f0 30 ff ff f0 ff ff ff 03  | b'\x0f\xff\xff\x0f\xff\xff\xf0\xf00\xff\xff\xf0\xff\xff\xff\x03'
      000000c6: 33 0f ff ff 0f ff 00 33 33 30 ff ff f0 00 33 33  | b'3\x0f\xff\xff\x0f\xff\x00330\xff\xff\xf0\x0033'
      000000d6: 33 33 0f ff 03 33 33 33 33 33 30 00 33 33 33 33  | b'33\x0f\xff\x03333330\x003333'
      000000e6: 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33  | b'3333333333333333'

    --- BMP Decoded Pixels (解码后的像素) ---
    使用颜色表解析 16x16 像素数据...
    总共解析出 256 个像素索引。
    按 16x16 布局打印 (注意BMP图像通常从底部开始存储):
    Row 0: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 1: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 2: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 3: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 4: [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [ 0, 0, 0] [ 0, 0, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 5: [128,128, 0] [128,128, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [ 0, 0, 0] [128,128, 0] [128,128, 0]
    Row 6: [128,128, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [128,128, 0]
    Row 7: [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0]
    Row 8: [ 0, 0, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255]
    Row 9: [ 0, 0,255] [127,127,127] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0]
    Row 10: [128,128, 0] [ 0, 0,255] [ 0, 0,255] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0] [128,128, 0]
    Row 11: [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0,255] [ 0, 0, 0] [ 0, 0, 0] [255,255,255] [255,255,255] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 12: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0,255] [127,127,127] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 13: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0,255] [ 0, 0,255] [ 0, 0, 0] [255,255,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 14: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [ 0, 0,255] [ 0, 0, 0] [ 0, 0,255] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]
    Row 15: [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0] [128,128, 0]

相关推荐
helloworddm4 小时前
Vulkan GPU图像处理之直方图均衡化:Kompute框架实战与性能分析
图像处理·人工智能
ComputerInBook15 小时前
数字图像处理(4版)——第 11 章——特征提取(下)(Rafael C.Gonzalez&Richard E. Woods)
图像处理·人工智能·特征提取
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章69-圆弧测量
图像处理·人工智能·opencv·算法·计算机视觉
sali-tec1 天前
C# 基于OpenCv的视觉工作流-章70-轮廓点距
图像处理·人工智能·opencv·算法·计算机视觉
机器视觉_Explorer2 天前
【halcon】编程技巧:鼠标擦除
图像处理·人工智能·深度学习·算法·视觉检测
xrgs_shz2 天前
【高光谱数据处理实战】基于Python的ENVI图像交互式裁剪与光谱数据预处理
开发语言·图像处理·python
sali-tec2 天前
C# 基于OpenCv的视觉工作流-章62-线线距离
图像处理·人工智能·opencv·算法·计算机视觉
兴通物联科技2 天前
整箱扫码高速传送带适配技术(硬件架构与核心算法篇)
图像处理·人工智能·物联网·计算机视觉·硬件架构
sali-tec3 天前
C# 基于OpenCv的视觉工作流-章66-直线夹角
图像处理·人工智能·opencv·算法·计算机视觉