1. 程式人生 > >影象處理與影象識別筆記(三)影象增強

影象處理與影象識別筆記(三)影象增強

影象增強的目的是為了改善影象的視覺效果,為了更便於人或機器的分析和處理,在不考慮影象降質(前提)的情況下,提高影象的可觀性。灰度變換是一種典型的影象增強方法。

一、灰度變換

將一個灰度區間對映到另一個灰度區間的變換稱為灰度變換,g(x,y)=T[f(x,y)]g(x,y) = T[f(x,y)],灰度區間是指02550-255的灰度值區間,00是黑色,255255是白色。灰色變換可使影象動態範圍加大,影象對比度擴充套件,影象清晰,特徵明顯。灰度變換可以分為線性變換和非線性變換。 1、線性變換 原始影象:f(x,y)f(x,y),灰度範圍:[a

,b][a,b],變換後的影象:g(x,y)g(x,y),灰度範圍:[c,d][c,d],存在以下變換關係:

g(x,y)=dcba[f(x,y)a]+cg(x,y) =\frac{d-c}{b-a}[f(x,y)-a]+c

2、非線性變換 灰度變換的非線性變換方法包括對數變換和指數變換,對數變換公式為g(x,y)=a+ln[f(x,y)+1]blncg(x,y) = a+\frac{\ln[f(x,y)+1]}{b\ln c},這個變換擴充套件低灰度區的對比度,壓縮高灰度值。指數變換公式為g

(x,y)=bc[f(x,y)a]1g(x,y)=b^{c[f(x,y)-a]}-1,與對數變換相反, 指數變換對影象的高灰度區有較大的擴充套件。

線性灰度變換例項如下,

import cv2
import numpy as np
import matplotlib.pyplot as plt 
import pylab

def grayTransformLine(img,c,d):#線性灰度變換
	img = img/255.0	#轉換為0-1
	Min = img.min()
	Max = img.max()
	return (d-c)/(Max-Min)*(img-Min)+c

def main():
	img = cv2.imread('Lena.jpg',0)
	new_img = grayTransformLine(img,0.5,1)#變換到0.5-1,整體變亮
	new_img2 = grayTransformLine(img,0,0.5)#變換到0-0.5,整體變灰暗
	cv2.imshow('bright',new_img)	
	cv2.imshow('dark',new_img2)
	cv2.waitKey(0)

if __name__ == "__main__":
	main()

輸出結果如下,