數字影像
1. 影像
像素: 像素是解析度的單位,像素是構成位圖影像的基本單元,每個像素都有自己的顏色,
解析度: 又稱“決議度”,影像的解析度就是單位英寸內的像素點數,單位是PPI(Pixels Per Inch)
PPI表示的是每英寸對角線上所擁有的像素數目(w:寬度像素數,h:高度像素數,di:螢屏尺寸),螢屏尺寸指的是對角線長度

在生活中經常混淆解析度與清晰度的關系以及解析度與螢屏尺寸的關系,
灰度: 表示影像像素明暗程度的數值,也就是黑白影像中點的顏色深度,范圍一般為0-255.白色為255,黑色為0.
通道: 把影像分解成一個或多個顏色成分:
- 單通道:一個像素點只需一個數值表示,只能表示灰度,0為黑色;(二值圖&灰度圖)
- 三通道:RGB模式,把影像分為紅綠藍三個通道,可以表示彩色,全0表示黑色;
- 四通道:RGBA模式,把RGB基礎上加上alpha通道,表示透明度,alpha=0表示全透明;
對比度: 指不同顏色之間的差別,對比度=最大灰度值/最小灰度值
RGB轉換為Gray(降維、保留梯度資訊): 常見以下幾種演算法
- 浮點演算法:
Gray = 0.3R + 0.59G + 0.11B - 整數方法:
Gray = ( 30R + 59G + 11B ) / 100 - 移位方法:
Gray = ( 76R + 151G + 28B ) >> 8 - 平均值法:
Gray = ( R + G + B ) / 3 - 保留綠色:
Gray = G
RGB值化為浮點數:
- 浮點數運算結果更精確,整數運算中會因丟棄小數部分可能導致顏色值嚴重失真,計算程序越多越失真
- 將RGB值轉化為[0,1]浮點數 (除以255)
- 二值化:先轉浮點數
if(img_gray[i,j]<=0.5):
img_gray[i,j] = 0
else
img_gray[i,j] = 1
- opencv大坑之BGR:opencv對于讀進來的圖片的通道排列是BGR,而不是主流的RGB!謹記!
#opencv讀入的矩陣是BGR,如果想轉為RGB,可以這么轉
img4 = cv2.imread('1.jpg')
img4 = cv2.cvtColor(img4,cv2.COLOR_BGR2RGB)
頻率: 灰度值變化劇烈程度的指標,是灰度在平面空間上的梯度,
幅值: 幅值是在一個周期內,交流電瞬時出現的最大絕對值,也就是一個正弦波,波峰到波谷的距離的一半,
2. 影像的取樣與量化
數字影像: 計算機保存的影像都是一個一個的像素點,稱為數字影像
取樣(數字化坐標值): 就是要用多少點來描述一幅影像,取樣結果質量的高低就是用解析度來衡量的
量化(數字化幅度值): 是指要使用多大范圍的數值來表示影像采樣之后的一個點,
3.上采樣與下采樣
下采樣: 縮小影像(或稱為下采樣(subsampled)或者降采樣(downsampled))
降采樣的主要目的有兩種:
- 使得影像符合顯示區域的大小
- 生成對應的略縮圖
下采樣原理:
( M / s ) * ( N / s )
上采樣: 放大影像
上采樣原理:內插值
常用的插值方法
- 最鄰近插值(The nearest interpolation)
- 雙線性插值
橫豎兩次單線性插值
影像相鄰四個點,故而分母都是1
存在的問題:
坐標系的選擇 解決辦法(找幾何中心:+0.5)
要通過雙線性插值的方法算出
雙線性插值的計算灰度是連續的,更光滑
由單線性插值引入:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-d2GwPBS8-1636380435509)(img\image-20211108172939177.png)]](https://img.uj5u.com/2021/11/10/2829921010141612.png)
引出雙線性插值:實質上是x方向做了兩次單線性插值,y方向上做了一次單線性插值,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-P1IEFMTV-1636380435510)(C:\Users\moresweet\Desktop\cv_learn\2.digitalImage\img\math_double.png)]](https://img.uj5u.com/2021/11/10/2829921010141613.png)
按照原理可以得出
srcX = ( dstX ) * ( srcWidth / dstWidth )
srcY = ( dstY ) * ( srcHeight / dstHeight )這樣會有問題,如果源影像和目的影像的映射均選擇映射的左上角的原點,那么會導致插值的結果取值偏左上,若都選擇右下角,則又會偏右下,
為了保證取值的效果,需要取影像中心,經過數學計算證明,原坐標和目的坐標均+0.5,即可保證取值在影像中心,插值效果被優化,雙線性插值與最鄰近插值比計算量要大很多,但不會存在灰度不連續的缺點,故而影像看起來更光滑,
4. 直方圖
描述對應灰度值的像素數
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TQQRydY1-1636380435512)(img\image-20211108190356853.png)]](https://img.uj5u.com/2021/11/10/2829921010141614.png)
特點:
- 直方圖不關心像素所處的空間位置,因此不受影像旋轉和平移變化的影響,可以作為影像的特征
- 任何一幅特定的影像都有唯一的直方圖與之對應,但不同的影像可以有相同的直方圖與之對應
- 兩個不連續區域的要相加
應用: 推測影像的亮度分布程度
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-i42yUfpg-1636380435513)(img\image-20211108190529379.png)]](https://img.uj5u.com/2021/11/10/2829921010141615.png)
直方圖均衡化: 用一定的演算法使直方圖大致平和的方法
直方圖均衡化的作用是影像增強,
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0VCmlzeH-1636380435514)(img\image-20211108190826547.png)]](https://img.uj5u.com/2021/11/10/282992101014162.png)
方法:
- 依次掃描原始灰度影像的每一個像素,計算出影像的灰度直方圖H
- 計算灰度直方圖的累加直方圖
- 根據累加直方圖和直方圖均衡化的原理得到輸入與輸出的映射關系
- 最后根據映射關系得到結果:
dst( x, y ) = H'( src( x, y ) )
公式解釋:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VMwEa7t1-1636380435515)(img\image-20211108191606151.png)]](https://img.uj5u.com/2021/11/10/2829921010141616.png)
5. 影像處理方法
1. 直方圖均衡化
同上
2. 濾波
濾波是影像處理的基本方法
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8vP049Fx-1636380435517)(img\image-20211108193427191.png)]](https://img.uj5u.com/2021/11/10/2829921010141617.png)
3. 卷積
卷積的原理和濾波的原理幾乎一樣,但是卷積操作在做乘積之前,需要先將卷積核翻轉180度,之后再做乘積,
卷積的數學定義(g為作用在f上的filter或者kernel):
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-k3PeWb0V-1636380435518)(img\image-20211108193702152.png)]](https://img.uj5u.com/2021/11/10/282992101014163.png)
卷積負責提取影像中的區域特征
過濾器:
- 濾波器的大小應該是奇數,這樣它才有一個中心,這壓根也就有了核的半徑,
- 濾波器矩陣的元素之和為1,保證了濾波前后的影像亮度不變,(非必須)
- 元素之和大于1則濾波后的影像比原圖更亮;反之則變暗,(注:和為0影像并不會變黑,只是很暗)
- 濾波后的結構,可能會出現負數或者大于255的數值,處理方法為截斷到0-255,對于負數可以取絕對值處理,
卷積核/Kernel:
- 每個卷積核都代表了一種影像模式
常見的卷積核:
- 黑白邊界
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-b6iczdlb-1636380435519)(img\image-20211108195046211.png)]](https://img.uj5u.com/2021/11/10/282992101014164.png)
- 原圖卷積(無用)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-avhcyiNG-1636380435520)(img\image-20211108195114753.png)]](https://img.uj5u.com/2021/11/10/282992101014165.png)
- 平滑(平滑均值濾波)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OXL2RD80-1636380435521)(img\image-20211108195147190.png)]](https://img.uj5u.com/2021/11/10/282992101014166.png)
- 高斯平滑
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-IS3xYj14-1636380435522)(img\image-20211108195223281.png)]](https://img.uj5u.com/2021/11/10/282992101014167.png)
- 影像銳化(拉普拉斯變換核函式)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mnXg3yb9-1636380435523)(img\image-20211108195255758.png)]](https://img.uj5u.com/2021/11/10/282992101014168.png)
- Soble邊緣檢測(強調了邊緣相鄰的像素點對邊緣的影響)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GNjWRJFA-1636380435524)(img\image-20211108195321214.png)]](https://img.uj5u.com/2021/11/10/2829921010141618.png)
步長:
如果用(k,k)的過濾器來卷積一張(h,w)的圖片,每次移動一個像素的話,得出的輸出結果是(h-k+1,w-k+1),k是過濾器大小,h和w分別是圖片的高寬,
若每次移動s個像素,稱為步長為s的卷積,輸出結果為((h-k)/s + 1, (w-k)/s +1)
- k或者s的值比1大的話,那么每次卷積之后的結果的寬要比卷積前小一些,
- 丟失資訊
填充(Padding):
卷積核在對邊緣卷積時,會丟失資訊,故應在源影像上填充0,以減少資訊丟失
p = (s(h - 1) - h + k) / 2
若步長為1
p = (k - 1) / 2
p: 增加p層0
填充的三種模式
- full
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WFy3ev0U-1636380435525)(img\image-20211108214847918.png)]](https://img.uj5u.com/2021/11/10/282992101014169.png)
- same
中心點與邊角重合卷積,same,一般same輸出的特征圖尺寸與原圖保持一致,當然這與步長也有關系
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eKLWvlbw-1636380435526)(img\image-20211108214935707.png)]](https://img.uj5u.com/2021/11/10/2829921010141610.png)
- valid
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-bQQBXJn9-1636380435526)(img\image-20211108215002002.png)]](https://img.uj5u.com/2021/11/10/2829921010141611.png)
輸入不符合尺寸的解決辦法:
- 插值
- resize
- 加填充padding
三通道卷積程序:
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-D75olrRz-1636380435527)(img\image-20211108215106260.png)]](https://img.uj5u.com/2021/11/10/2829921010141619.png)
卷積核的確定:
通過CNN訓練而得
個人學習筆記,僅交流學習,轉載請注明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/354790.html
標籤:其他
