最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)圖像增強(qiáng)算法

 更新時(shí)間:2022年08月05日 15:26:57   作者:咸魚也有翻身日  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像增強(qiáng)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)圖像增強(qiáng)算法的具體代碼,供大家參考,具體內(nèi)容如下

圖像增強(qiáng)算法,圖像銳化算法

1)基于直方圖均衡化

2)基于拉普拉斯算子

3)基于對數(shù)變換

4)基于伽馬變換

5)  CLAHE

6)  retinex-SSR

7)  retinex-MSR

其中,基于拉普拉斯算子的圖像增強(qiáng)為利用空域卷積運(yùn)算實(shí)現(xiàn)濾波
基于同一圖像對比增強(qiáng)效果
直方圖均衡化:對比度較低的圖像適合使用直方圖均衡化方法來增強(qiáng)圖像細(xì)節(jié)
拉普拉斯算子可以增強(qiáng)局部的圖像對比度
log對數(shù)變換對于整體對比度偏低并且灰度值偏低的圖像增強(qiáng)效果較好
伽馬變換對于圖像對比度偏低,并且整體亮度值偏高(對于相機(jī)過曝)情況下的圖像增強(qiáng)效果明顯

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


# 直方圖均衡增強(qiáng)
def hist(image):
? ? r, g, b = cv2.split(image)
? ? r1 = cv2.equalizeHist(r)
? ? g1 = cv2.equalizeHist(g)
? ? b1 = cv2.equalizeHist(b)
? ? image_equal_clo = cv2.merge([r1, g1, b1])
? ? return image_equal_clo


# 拉普拉斯算子
def laplacian(image):
? ? kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
? ? image_lap = cv2.filter2D(image, cv2.CV_8UC3, kernel)
? ?# cv2.imwrite('th1.jpg', image_lap)
? ? return image_lap


# 對數(shù)變換
def log(image):
? ? image_log = np.uint8(np.log(np.array(image) + 1))
? ? cv2.normalize(image_log, image_log, 0, 255, cv2.NORM_MINMAX)
? ? # 轉(zhuǎn)換成8bit圖像顯示
? ? cv2.convertScaleAbs(image_log, image_log)
? ? return image_log


# 伽馬變換
def gamma(image):
? ? fgamma = 2
? ? image_gamma = np.uint8(np.power((np.array(image) / 255.0), fgamma) * 255.0)
? ? cv2.normalize(image_gamma, image_gamma, 0, 255, cv2.NORM_MINMAX)
? ? cv2.convertScaleAbs(image_gamma, image_gamma)
? ? return image_gamma


# 限制對比度自適應(yīng)直方圖均衡化CLAHE
def clahe(image):
? ? b, g, r = cv2.split(image)
? ? clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
? ? b = clahe.apply(b)
? ? g = clahe.apply(g)
? ? r = clahe.apply(r)
? ? image_clahe = cv2.merge([b, g, r])
? ? return image_clahe


def replaceZeroes(data):
? ? min_nonzero = min(data[np.nonzero(data)])
? ? data[data == 0] = min_nonzero
? ? return data


# retinex SSR
def SSR(src_img, size):
? ? L_blur = cv2.GaussianBlur(src_img, (size, size), 0)
? ? img = replaceZeroes(src_img)
? ? L_blur = replaceZeroes(L_blur)

? ? dst_Img = cv2.log(img/255.0)
? ? dst_Lblur = cv2.log(L_blur/255.0)
? ? dst_IxL = cv2.multiply(dst_Img, dst_Lblur)
? ? log_R = cv2.subtract(dst_Img, dst_IxL)

? ? dst_R = cv2.normalize(log_R,None, 0, 255, cv2.NORM_MINMAX)
? ? log_uint8 = cv2.convertScaleAbs(dst_R)
? ? return log_uint8


def SSR_image(image):
? ? size = 3
? ? b_gray, g_gray, r_gray = cv2.split(image)
? ? b_gray = SSR(b_gray, size)
? ? g_gray = SSR(g_gray, size)
? ? r_gray = SSR(r_gray, size)
? ? result = cv2.merge([b_gray, g_gray, r_gray])
? ? return result


# retinex MMR
def MSR(img, scales):
? ? weight = 1 / 3.0
? ? scales_size = len(scales)
? ? h, w = img.shape[:2]
? ? log_R = np.zeros((h, w), dtype=np.float32)

? ? for i in range(scales_size):
? ? ? ? img = replaceZeroes(img)
? ? ? ? L_blur = cv2.GaussianBlur(img, (scales[i], scales[i]), 0)
? ? ? ? L_blur = replaceZeroes(L_blur)
? ? ? ? dst_Img = cv2.log(img/255.0)
? ? ? ? dst_Lblur = cv2.log(L_blur/255.0)
? ? ? ? dst_Ixl = cv2.multiply(dst_Img, dst_Lblur)
? ? ? ? log_R += weight * cv2.subtract(dst_Img, dst_Ixl)

? ? dst_R = cv2.normalize(log_R,None, 0, 255, cv2.NORM_MINMAX)
? ? log_uint8 = cv2.convertScaleAbs(dst_R)
? ? return log_uint8


def MSR_image(image):
? ? scales = [15, 101, 301] ?# [3,5,9]
? ? b_gray, g_gray, r_gray = cv2.split(image)
? ? b_gray = MSR(b_gray, scales)
? ? g_gray = MSR(g_gray, scales)
? ? r_gray = MSR(r_gray, scales)
? ? result = cv2.merge([b_gray, g_gray, r_gray])
? ? return result


if __name__ == "__main__":
? ? image = cv2.imread('img/FJ(93).png')
? ? image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

? ? plt.subplot(4, 2, 1)
? ? plt.imshow(image)
? ? plt.axis('off')
? ? plt.title('Offical')

? ? # 直方圖均衡增強(qiáng)
? ? image_equal_clo = hist(image)

? ? plt.subplot(4, 2, 2)
? ? plt.imshow(image_equal_clo)
? ? plt.axis('off')
? ? plt.title('equal_enhance')

? ? # 拉普拉斯算法增強(qiáng)
? ? image_lap = laplacian(image)
? ? plt.subplot(4, 2, 3)
? ? plt.imshow(image_lap)
? ? plt.axis('off')
? ? plt.title('laplacian_enhance')

? ? # LoG對象算法增強(qiáng)
? ? image_log = log(image)

? ? plt.subplot(4, 2, 4)
? ? plt.imshow(image_log)
? ? plt.axis('off')
? ? plt.title('log_enhance')

? ? # # 伽馬變換
? ? image_gamma = gamma(image)

? ? plt.subplot(4, 2, 5)
? ? plt.imshow(image_gamma)
? ? plt.axis('off')
? ? plt.title('gamma_enhance')

? ? # CLAHE
? ? image_clahe = clahe(image)

? ? plt.subplot(4, 2, 6)
? ? plt.imshow(image_clahe)
? ? plt.axis('off')
? ? plt.title('CLAHE')

? ? # retinex_ssr
? ? image_ssr = SSR_image(image)

? ? plt.subplot(4, 2, 7)
? ? plt.imshow(image_ssr)
? ? plt.axis('off')
? ? plt.title('SSR')

? ? # retinex_msr
? ? image_msr = MSR_image(image)

? ? plt.subplot(4, 2, 8)
? ? plt.imshow(image_msr)
? ? plt.axis('off')
? ? plt.title('MSR')

? ? plt.show()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pandas常用累計(jì)、同比、環(huán)比等統(tǒng)計(jì)方法實(shí)踐過程

    Pandas常用累計(jì)、同比、環(huán)比等統(tǒng)計(jì)方法實(shí)踐過程

    這篇文章主要介紹了Pandas常用累計(jì)、同比、環(huán)比等統(tǒng)計(jì)方法實(shí)踐過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python中os.path.dirname(path)詳細(xì)解釋和使用示例

    python中os.path.dirname(path)詳細(xì)解釋和使用示例

    這篇文章主要介紹了python中os.path.dirname(path)詳細(xì)解釋和使用示例,os.path.dirname是一個(gè)Python函數(shù),用于獲取文件路徑的目錄部分,它通常與os.path.basename結(jié)合使用,以分離路徑中的目錄和文件名,需要的朋友可以參考下
    2025-03-03
  • Python三維網(wǎng)格體素化實(shí)例

    Python三維網(wǎng)格體素化實(shí)例

    這篇文章主要介紹了Python三維網(wǎng)格體素化實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python命令行運(yùn)行文件的實(shí)例方法

    Python命令行運(yùn)行文件的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于Python命令行運(yùn)行文件的實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • 如何用python抓取B站數(shù)據(jù)

    如何用python抓取B站數(shù)據(jù)

    今天介紹一個(gè)獲取B站數(shù)據(jù)的Python擴(kuò)展庫-bilibili_api,對此感興趣的同學(xué),可以實(shí)驗(yàn)一下
    2021-05-05
  • 淺談python中的錯(cuò)誤與異常

    淺談python中的錯(cuò)誤與異常

    寫Python代碼的小伙伴不可避免地會(huì)遇到代碼執(zhí)行錯(cuò)誤和異常,這次就來詳細(xì)的總結(jié)一下python中的錯(cuò)誤和異常
    2021-06-06
  • python讀取Dicom文件的示例詳解

    python讀取Dicom文件的示例詳解

    這篇文章通過示例代碼介紹了python讀取Dicom文件的方法,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • pytorch中Schedule與warmup_steps的用法說明

    pytorch中Schedule與warmup_steps的用法說明

    這篇文章主要介紹了pytorch中Schedule與warmup_steps的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python爬蟲實(shí)現(xiàn)HTTP網(wǎng)絡(luò)請求多種實(shí)現(xiàn)方式

    Python爬蟲實(shí)現(xiàn)HTTP網(wǎng)絡(luò)請求多種實(shí)現(xiàn)方式

    這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)HTTP網(wǎng)絡(luò)請求多種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python3爬取淘寶信息代碼分析

    python3爬取淘寶信息代碼分析

    本篇文章通過代碼實(shí)例給大家分享了python3爬取淘寶信息的過程以及實(shí)例分析,對此有興趣的朋友學(xué)習(xí)下。
    2018-02-02

最新評論

肥东县| 德兴市| 太原市| 济源市| 林州市| 洛浦县| 新昌县| 鲁山县| 门头沟区| 两当县| 马山县| 永丰县| 竹溪县| 绵竹市| 曲松县| 布拖县| 陵川县| 大兴区| 贵南县| 牟定县| 明水县| 射阳县| 新乡县| 邻水| 电白县| 外汇| 即墨市| 虹口区| 宜良县| 绩溪县| 秀山| 天津市| 乐业县| 青川县| 诸暨市| 勐海县| 海宁市| 离岛区| 铁岭市| 中山市| 农安县|