日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【图像处理】——灰度变换心得(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位图)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。