bmp文件頭_圖像算法原理與實踐——圖像文件存儲

圖像數據在計算機儲器設備中的存儲形式是圖像文件,圖像必須按照某個公開的、規范約終結定的數據存儲順序和結構進行保存,才能使不同的程序對圖像文件順利進行打開或存盤操作,實現數據共享。圖像數據在文件中的存儲順序和結構稱為圖像文件格式。目前主流的圖像文件格式有 .bmp; .jpg;.jpeg;.png;.gif;.webp;.tiff;.psd 等各種不同的文件格式。在這些圖像格式中大部分的格式,都是將像素數據經過壓縮編碼后進行保存的,這里涉及到比較復雜的圖像壓縮算法等操作,只有BMP格式的文件是支持原始圖像數據保存的,本章重點針對BMP文件格式進行詳細講述。

BMP(全稱Bitmap)是Windows操作系統中的標準圖像文件格式,可以分成兩類:設備相關位圖(DDB)和設備無關位圖(DIB),使用非常廣。它采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。BMP文件的圖像深度可選 1bit、4bit、8bit及24bit。BMP文件存儲數據時,圖像的掃描方式是按從左到右從下到上的順序。由于BMP文件格式是Windows環境中交換與圖有關的數據的一種標準,因此在Windows環境中運行的圖形圖像軟件都支持BMP圖像格式。在Windows系統平臺上和Android手機上,直接使用系統默認的圖片瀏覽器即可打開。

一、BMP文件格式詳解

BMP文件總共由四個部分構成:

(1)BMP文件頭(bmp file header):提供文件的格式、大小等信息

(2)位圖信息頭(bitmap information):提供圖像數據的尺寸、位平面數、壓縮方式、顏色索引等信息

(3)調色板(color palette):可選,如使用索引來表示圖像,調色板就是索引與其對應的顏色的映射表,在使用 256位彩色、16位彩色等情況下用到

(4)位圖數據(bitmap data):就是圖像的像素數據

c33bcf1f3eb1da3b1289c1e1e6a246e6.png
BMP文件總的構成

1、BMP文件頭部分

固定占用14個字節,包括文件類型表示、文件大小、像素數據偏移等信息

eb86ce6ce01b9b3a481ab8bbe7041261.png

2、位圖信息頭

固定占用40個字節,包含了圖像的基本新,例如:像素的寬度、高度、色彩格式位數、是否有壓縮(絕大部分情況下無壓縮)等。

31786b67b556c228727e906696cc88c9.png

3、調色板信息

這一項是可選項,適用于索引方式偽彩色的圖像數據。調色板其實是一張映射表,標識顏色索引號與其代表的顏色的對應關系。總共有256個索引,每個索引對應一個RGBA四字節的色彩值,而后續位圖數據只需要保存每個像素點的索引,根據索引找到對應的RGBA數據值。根據索引列表大小,該部分信息總計占用 256*4=1024個字節。

effec348e430bdc91283cc853c412fbe.png

偽彩色方式在過去計算機存儲空間不足的情況下,采用的一種平衡內存和效果的方式,由于現在硬件成本的大幅度下降,所以現在這種方式在絕大部分甚至嵌入式設備上也很少使用了,因此本章節也不對該部分詳細講述。

4、位圖數據

這部分存放的就是詳細的每個像素的RGB或者RGBA數據。存放順序從左到右、從下到上的順序存放。 這里有兩點需要注意一下:

(1)像素RGB值存放時,先存放圖像最下面一行數據,然后再存放下面倒數第二行數據,所以存放順序是倒的,這個跟正常瀏覽順序不一樣。

(2)每一行像素數據需要保證4字節對齊,不對齊的需要補充空字節,這個是BMP文件格式本身要求的。對于RGBA 32位色彩格式來說沒有任何問題,但是對于Gray或者RGB格式的數據 ,有時一行像素需要補充一些空字節。例如:對于寬高為 322*240 像素的RGB數據,正常計算一行像素數據需要 322 * 3= 966字節,但是966不是四字節對齊,所以在存儲時,每行的像素數據要保存為 968字節,最后2個字節保留。

二、BMP文件讀寫操作

針對如上的BMP文件格式,我們使用C語言來實現對于.bmp文件的讀寫操作,考慮到調色板格式的色彩格式現在幾乎不再使用,因此我們代碼中也不考慮這種情況。

//

總結

本章主要講解了對于非壓縮的RGB、RGBA像素格式的圖像數據保存到.bmp文件的方法。.bmp文件是使用最廣泛的文件格式之一,支持的平臺眾多,也是存儲和加載最方便的一種圖像格式。在后續教程中,我們可以隨時將算法處理過程中的圖像數據保存下來查看圖像內容,從而方便調試。而其他格式的圖片可以通過工具方便的轉換為.bmp圖片,在Windows平臺上最簡單的一種方式是:使用Windows系統自帶的畫圖程序,打開任意格式的圖像文件,然后選擇另存為 .bmp即可。

文章系列目錄

華叔-視覺魔術師:圖像算法原理與實踐——緒論?zhuanlan.zhihu.com

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一共81個,開源大數據處理工具匯總

查詢引擎 一、Phoenix 貢獻者::Salesforce 簡介:這是一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Phoenix完全使用Java編寫,代碼位于GitHub上,并且提供了一個客戶端可嵌入的JDBC驅動。 Phoen…

html5怎么刪除樣式,css怎么刪除一個樣式

css刪除一個樣式的方法:首先創建一個HTML示例文件;然后給div添加css樣式;最后通過“removeClass()”方法從被選元素刪除一個或多個類即可。本教程操作環境:windows7系統、HTML5&&CSS3版、Dell G3電腦。CSS添加樣式、刪除樣…

python語言中內置的字符串排版方法_Python14之字符串(各種奇葩的內置方法)

一、字符串的分片操作其分片操作和列表和元組一樣1 str1 keshengtao2 str1[2:6]3 shen4 str1[:]5 keshengtao6 str1[:4]7 keshView Code二、訪問字符串中的字符注:字符串中的單個字符,同樣也是字符串1 str1 keshengtao2 str1[3]3 hView Code三、字符串…

sqlserver 字符串轉化數值函數_Excel常見函數用法(TEXT函數)

基本語句:=TEXT(數值,文本格式) 用法說明:TEXT函數可通過格式代碼對數字應用格式,進而更改數字的顯示方式。其中,參數①是我們想要改變格式的數值,它可以是文本,也可以是數字;而參數②就是我們想要參數①最終變成的格式,它的作用原理和自定義數字格式一致,基本用法共…

laravel 的 表單請求

在對文章、帖子等信息進行創建、更新的時候,需要進行表單驗證的時候,一般我們使用Request來獲取輸入的值來進行驗證,這樣需要在每一個方法中進行書寫驗證規則。 laravel 提供了創建表單請求,我們可以使用 artisan 來創建一個表單請…

Flume概述

官網 http://flume.apache.org/ 介紹 Flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸的系統。Flume可以采集文件,socket數據包等各種形式源數據,又可以將采集到的數據輸出到HDFS、hbase、hive、kafka等眾多外部存儲系統中。一般的采集需…

日常計算機操作知識試題,關于2017計算機一級考試試題操作題

關于2017計算機一級考試試題操作題在日常學習和工作中,我們很多時候都不得不用到試題,試題可以幫助參考者清楚地認識自己的知識掌握程度。那么一般好的試題都具備什么特點呢?下面是小編為大家整理的關于2017計算機一級考試試題操作題&#xf…

概率分布分位點_概率分布的分位數三.PPT

概率分布的分位數三5.2 常用統計分布 一、常見分布 t 分布具有下列性質: 性質5.6 設 , 則當 時有 性質5.7 設 , 是T的分布密度, 則 此性質說明,當 時,T分布的極限 分布是標準正態分布。 這說明F分布極限分布也是正態分…

mastercam加工報表生成_聽說最厲害的工程師才敢這樣玩五軸加工?

今天讓我們一起來看看五軸有些什么接地氣的玩法:側刃加工(此圖非動圖)相較使用刀具底刃加工,利用刀具側刃加工可以得到更加光滑的加工表面。適用于航空航天工業中復雜型腔工件的精加工。Mastercam提供專用功能可有效防止刀具和零件型腔底部出現過切&…

Flume安裝(單節點)

Flume單節點的安裝非常簡單。 1、下載 2、解壓 3、配置環境變量FLUME_HOME 4、flume-env.sh配置JAVA_HOME 具體步驟 下載 http://flume.apache.org/download.html 解壓 tar -zxvf apache-flume-1.7.0-bin.tar.gz 配置FLUME_HOME root 用戶或者 su root vi /etc/pro…

電子科技大學2019年計算機復試分數線,2019考研電子科技大學復試分數線已公布...

2019考研電子科技大學復試分數線已公布!相信接下來很多2019考研考生都會關注34所考研復試分數線及考研國家線相關信息。中公考研小編整理了“2019考研電子科技大學復試分數線已公布”文章,希望能對2019考研考生有幫助~根據教育部有關文件精神&#xff0c…

量子計算時代來臨?D-Wave 量子計算機使運算速度提高 1 億倍!

查爾斯巴貝奇(Charles Babbage)于 19 世紀 30 年代提出了一款難以實現的概念性分析引擎,自那時以來,計算機科學一直為了保持領先于時代的地位而奮力前行。在過去 75 年內,許多驚人的創舉接連出現:可編程電子…

python編的游戲越玩越卡_用Python寫游戲,不到十分鐘就學會了

安裝pygame本人電腦是windows 10、python3.6,pygame下載地址:pypi.python.org/pypi/Pygame…請自行下載對應python版本的pygame運行以下命令創建Pygame窗口及響應用戶輸入新建一個文件夾alien_invasion,并在文件夾中新建alien_invasion.py文件…

Map Reduce和流處理

歡迎大家前往騰訊云社區,獲取更多騰訊海量技術實踐干貨哦~本文由從流域到海域翻譯,發表于騰訊云社區map()和reduce()是在集群式設備上用來做大規模數據處理的方法,用戶定義一個特定的映射,函數將使用該映射對一系列鍵值對進行處理…

Flume實戰監聽網絡端口

具體的配置解釋見官網 http://flume.apache.org/FlumeUserGuide.html#flume-sources 1、flume安裝目錄下新建文件夾 example 2、在example下新建文件 netcat-logger.conf內容如下:#name the components on this agent a1.sources r1 a1.sinks k1 a1.channels…

滑動關機代碼bat_BAT面試算法進階--(2) 無重復字符的最長子串(滑動法優化+ASCII碼法)...

一.算法題題目Given a string, find the length of the longest substring without repeating characters.ExampleGiven "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the length…

jpa findone怎么用_Jpa VS MyBatis,你用哪個?

經常看到有小伙伴在討論 JPA 和 MyBatis 這兩個孰優孰劣的問題,其實松哥覺得這是一個偽命題,沒必要為這種問題爭個面紅耳赤,每種框架有它存在的道理,也有各自擅長的事情,今天松哥就和大家來聊聊這兩個框架,…

國家開放大學本科計算機應用基礎,【(精華版)最新國家開放大學電大本科《計算機應用基礎》網絡課網考形考作業一及三試題答案】.docx...

【(精華版)最新國家開放大學電大本科《計算機應用基礎》網絡課網考形考作業一及三試題答案】(精華版)最新國家開放大學電大本科《計算機應用基礎》網絡課網考形考作業一及三試題答案 盜傳必究 形考作業一 一、單選題 1當前的計算機一般被認為是第四代計算機,它所采用…

Reset Password 重置密碼 (CentOS 5,6,7 ; Juniper Networks: SRX100 )

一些重置root 密碼的文檔分享(來自官網): CentOS 5,6,7 Juniper Networks : SRX100 鏈接:https://share.weiyun.com/5BM4kwK 密碼:f3t5xu轉載于:https://www.cnblogs.com/ling3blog/p/905018…

python正則表達式中的轉義字符_python 正則表達式之轉義字符

最近在整理python相關的知識,使用python對網站進行爬取數據的時候,需要使用到轉義字符,之前對轉義字符理解一直比較模糊,并且在python中還有一個叫原生字符r。所以通過網上調查資料對該內容進行整理,已備不時之需。 字…