【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)
生活随笔
收集整理的這篇文章主要介紹了
【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、灰度變換函數
對數變換
加碼變換
常見雷點
常見灰度變換函數
兩個函數cv2.normalize,cv2.convertScaleAbs(new_img)
一、灰度變換函數
Python圖像處理(一)【灰度化、二值化、灰度變換】
Python實現對數變換、冪律變換
對數變換
加碼變換
常見雷點
注意:上述的變換是先將原始的像素值進行對數或者冪律變換,然后得到相應變換后的矩陣,為了使得能夠正常的顯示,還需要將矩陣元素值的范圍限制在0-255之間,以及將其轉換為8位圖(uint8)
代碼如下:
cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX) new_img = cv2.convertScaleAbs(new_img)也可以使用以下的方法來創建函數,常用的是冪律變換,因為可以直接先對變換前的像素值進行歸一到0-1的操作,然后再進行乘以255的操作
常見灰度變換函數
兩個函數cv2.normalize,cv2.convertScaleAbs(new_img)
cv2.normalize上面的對數變換代碼相當于先把灰度范圍[0,255]變換到[0,5.554]在使用cv2.normalize()按比例還原到[0,255]
cv2.convertScaleAbs()函數 (通過線性變換將數據轉換成8位[uint8])
import cv2 import math import numpy as np#對數變換 def logTransform(c, img):# 3通道RGBh,w,d = img.shape[0],img.shape[1],img.shape[2]new_img = np.zeros((h,w,d),np.float32)for i in range(h):for j in range(w):for k in range(d):new_img[i,j,k] = c*(math.log(1.0+img[i,j,k]))# # 灰度圖專屬# h, w = img.shape[0], img.shape[1]# new_img = np.zeros((h, w),np.uint8)# for i in range(h):# for j in range(w):# new_img[i, j] = c * (math.log(1.0 + img[i, j]))# #經過log變換后0-255變成了0-5.5,需要在8比特的顯示器中進行顯示,則需要將其歸一化規范化到(0,255)中,即使用normalize來實現new_img = cv2.normalize(new_img, new_img, 0, 255, cv2.NORM_MINMAX)new_img = cv2.convertScaleAbs(new_img)return new_img#冪律變換 import math import numpy as np import cv2def gammaTranform(c,gamma,image):h,w,d = image.shape[0],image.shape[1],image.shape[2]new_img = np.zeros((h,w,d),dtype=np.float32)for i in range(h):for j in range(w):new_img[i,j,0] = c*math.pow(image[i, j, 0], gamma)new_img[i,j,1] = c*math.pow(image[i, j, 1], gamma)new_img[i,j,2] = c*math.pow(image[i, j, 2], gamma)cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)new_img = cv2.convertScaleAbs(new_img)#將圖像轉化為8比特圖像,uint8return new_img# 替換為你的圖片路徑 img = cv2.imread(r'E:\SCUT_study_files\PYTHON\Image_Processing\colorful_lena.jpg') img1 = cv2.imread(r'E:\SCUT_study_files\PYTHON\Image_Processing\colorful_lena.jpg') new_img = gammaTranform(1,2.5,img1) log_img = logTransform(1.0, img) cv2.imshow('log_img', log_img) cv2.imshow('new_img', new_img) cv2.waitKey(0)log變換、冪律變換gamma>1、冪律變換gamma<1,原圖
總結
以上是生活随笔為你收集整理的【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: line-height:1.5和line
- 下一篇: android 面试汇总二