【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)
目錄
一、比特平面
1st比特平面:括號(hào)里面的為比特值,前面的是原圖像中對(duì)應(yīng)要變?yōu)?的像素值
2nd比特平面:
3rd比特平面:
4th比特平面:
5th比特平面:
6th比特平面:
7th比特平面:
8th比特平面:
小結(jié):第i比特平面
簡(jiǎn)單理解
二、代碼實(shí)現(xiàn)
MATLAB代碼實(shí)現(xiàn)
Python實(shí)現(xiàn)
比特圖重構(gòu)(重建不理想)
翻了很多博客,都沒(méi)有將各個(gè)比特圖說(shuō)清楚,直到看了數(shù)字圖像處理才明白真正的方法,因此記下來(lái)分享給大家
一、比特平面
根據(jù)岡薩雷斯的數(shù)字圖像處理課本(中文第四版)P85-P86,比特平面分層我的理解是:
一幅8比特的圖像,可以看作8個(gè)一比特的圖像組成?
一開(kāi)始我的理解是簡(jiǎn)單的閾值函數(shù),但這是完全錯(cuò)誤的!
既然8比特圖像的灰度級(jí)是256,則第一比特平面即將0-127的值映射為0,128-255映射為1。如此,那么第七比特平面0-63的映射為0,然后64-255映射為1。?然后繼續(xù)推導(dǎo)下去在第2,第3比特進(jìn)行不下去,?通過(guò)課后題答案,發(fā)現(xiàn)問(wèn)題所在。
這是課后習(xí)題3.3(a)的答案
1st比特平面:括號(hào)里面的為比特值,前面的是原圖像中對(duì)應(yīng)要變?yōu)?的像素值
這是最低的比特平面,其比特值為:
0、2、4、6、8、10、...、254(0)
1、3、5、7、9、11、...、255(1)
規(guī)律:區(qū)間長(zhǎng)為0,偶數(shù)為0,奇數(shù)為1,共有2^(8-1+1)=256個(gè)區(qū)間
2nd比特平面:
比特值為0的像素值:【0,1】【4,5】【8,9】【12,13】。。。【252,253】
比特值為1的像素值:【2,3】【6,7】【10,11】【14,15】。。。【254,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2,區(qū)間起始點(diǎn)為0或2^2的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(2-1)=2個(gè),共有2^(8-2+1)=128個(gè)區(qū)間
3rd比特平面:
比特值為0的像素值:【0,3】【8,11】【16,19】【24,27】.。。。【248,251】
比特值為1的像素值:【4,7】【12,15】【20,23】【28,31】。。。【252,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為4,區(qū)間起始點(diǎn)為0或2^3的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(3-1)=4個(gè),共有2^(8-3+1)=64個(gè)區(qū)間
4th比特平面:
比特值為0的像素值:【0,7】【16,23】【32,39】【48,55】.。。。【239,247】
比特值為1的像素值:【8,15】【24,31】【40,47】【56,63】。。。【248,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2^(4-1)=8,區(qū)間起始點(diǎn)為0或2^4的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(4-1)=8個(gè),共有2^(8-4+1)=32個(gè)區(qū)間
5th比特平面:
比特值為0的像素值:【0,15】【32,47】【64,79】【96,111】【128,143】【160,175】【192,207】【224,239】
比特值為1的像素值:【16,31】【48,63】【80,95】【110,127】【144,159】【176,191】【208,221】【240,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2^(5-1)=16,區(qū)間起始點(diǎn)為0或2^5的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(5-1)=16個(gè),共有2^(8-5+1)=16個(gè)區(qū)間
6th比特平面:
比特值為0的像素值:【0,31】【64,95】【128,159】【192,207】
比特值為1的像素值:【31,63】【96,127】【160,191】【208,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2^(6-1)=32,區(qū)間起始點(diǎn)為0或2^6的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(6-1)=32個(gè),共有2^(8-6+1)=8個(gè)區(qū)間
7th比特平面:
比特值為0的像素值:【0,63】【128,191】
比特值為1的像素值:【64,127】【192,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2^(7-1)=64,區(qū)間起始點(diǎn)為0或2^7的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(7-1)=64個(gè),共有2^(8-7+1)=4個(gè)區(qū)間
8th比特平面:
比特值為0的像素值:【0,127】
比特值為1的像素值:【128,255】
規(guī)律:閉區(qū)間,區(qū)間長(zhǎng)為2^(8-1)=128,區(qū)間起始點(diǎn)為0或2^8的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(8-1)=128個(gè),共有2^(8-8+1)=2個(gè)區(qū)間
小結(jié):第i比特平面
閉區(qū)間,區(qū)間長(zhǎng)為2^(i-1),區(qū)間起始點(diǎn)為0或2^i的倍數(shù)時(shí)比特值為0,其他為1,一個(gè)閉區(qū)間元素有2^(i-1)=128個(gè),共有2^(8-i+1)=2個(gè)區(qū)間
簡(jiǎn)單理解
二、代碼實(shí)現(xiàn)
自己根據(jù)上述規(guī)律寫(xiě)代碼就不寫(xiě)了,大佬寫(xiě)出來(lái)了求分享謝謝
MATLAB代碼實(shí)現(xiàn)
可參考:https://blog.csdn.net/be_solider/article/details/79114263
Python實(shí)現(xiàn)
import cv2 import numpy as np import matplotlib.pyplot as plt#更改為需要的圖片路徑 img = cv2.imread(r'C:\Users\xxx\Desktop\dollar.tif',0) h,w = img.shape[0],img.shape[1]#處理過(guò)程 new_img = np.zeros((h,w,8))#用于存放每個(gè)比特位圖,行h列w高8 for i in range(h):for j in range(w):n = str(np.binary_repr(img[i,j],8)) #將圖像的灰度值轉(zhuǎn)化為8位二進(jìn)制數(shù)值,并且以str字符串的形式返回for k in range(8):new_img[i,j,k] = n[k]#依次從二進(jìn)制的高位到低位賦值給new_img中,這樣就將一個(gè)灰度值用8位的二進(jìn)制表達(dá)出來(lái)了#依次顯示 for i in range(8):#將比特圖從高到低顯示出來(lái),從第8比特圖從第1比特圖cv2.imshow('image',new_img[:,:,i])cv2.waitKey(0)?
?
?
比特圖重構(gòu)(重建不理想)
重構(gòu)是使用第n個(gè)平面的像素值乘以常數(shù) 2^(n-1)
用128乘以比特平面8,用64乘以比特平面7,然后將這兩個(gè)平面相加,原圖的主要特征便被復(fù)原了。
?
總結(jié)
以上是生活随笔為你收集整理的【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “跟着吴恩达老师入门机器学习”学习笔记(
- 下一篇: 可持久化线段树学习笔记