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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python中的图像增强

發(fā)布時(shí)間:2023/12/16 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中的图像增强 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

讓我開(kāi)始學(xué)習(xí)一些理論術(shù)語(yǔ),以免妨礙您的學(xué)習(xí)。 當(dāng)我們談?wù)搱D像增強(qiáng)時(shí) ,這基本上意味著我們想要一個(gè)比原始圖像更合適的圖像新版本。

例如,當(dāng)您掃描文檔時(shí),輸出圖像的質(zhì)量可能會(huì)比原始輸入圖像低。 因此,我們需要一種提高輸出圖像質(zhì)量的方法,以使輸出圖像在視覺(jué)上對(duì)觀看者更具表現(xiàn)力,而這正是圖像增強(qiáng)發(fā)揮作用的地方。 增強(qiáng)圖像時(shí),我們正在做的是銳化圖像特征,例如對(duì)比度和邊緣。

重要的是要注意,圖像增強(qiáng)功能不會(huì)增加圖像的信息內(nèi)容,而是會(huì)增加所選功能的動(dòng)態(tài)范圍,最終提高圖像的質(zhì)量。 因此,在這里我們實(shí)際上不知道輸出圖像的外觀,但是我們應(yīng)該能夠(主觀地)判斷是否有任何改進(jìn),例如觀察輸出圖像中的更多細(xì)節(jié)。

在數(shù)字圖像處理(即分割,表示)的基本步驟中,圖像增強(qiáng)通常用作預(yù)處理步驟。 有許多用于圖像增強(qiáng)的技術(shù),但是在本教程中,我將介紹兩種技術(shù): 圖像逆 變換和冪律變換 。 我們將看看如何在Python中實(shí)現(xiàn)它們。 所以,讓我們開(kāi)始吧!

圖像反轉(zhuǎn)

您可能已經(jīng)在本節(jié)的標(biāo)題中猜到了(也可以稱為圖像求反 ),圖像反轉(zhuǎn)旨在將輸入圖像中的暗強(qiáng)度轉(zhuǎn)換為輸出圖像中的亮強(qiáng)度,并將輸入圖像中的亮強(qiáng)度轉(zhuǎn)換為到輸出圖像中的暗強(qiáng)度。 換句話說(shuō),暗區(qū)變亮,而亮區(qū)變暗。

假設(shè)I(i,j)是指位于(i,j)的像素的強(qiáng)度值。 為了在此處進(jìn)行說(shuō)明, 灰度圖像中的強(qiáng)度值落在[0,255]范圍內(nèi),并且(i,j)指行和列值。 當(dāng)我們?cè)诨叶葓D像上應(yīng)用圖像逆算子時(shí),輸出像素O(i,j)值為:

O(i,j) = 255 - I(i,j)

如今,我們大多數(shù)圖像是彩色圖像。 這些圖像包含紅色 , 綠色和藍(lán)色三個(gè)通道,稱為RGB圖像。 在這種情況下,與上述公式相反,我們需要從255中減去每個(gè)通道的強(qiáng)度。因此,輸出圖像在像素(i,j)處將具有以下值:

O_R(i,j) = 255 - R(i,j) O_G(i,j) = 255 - G(i,j) O-B)i,j) = 255 - B(i,j)

介紹完之后,讓我們看看如何在Python中實(shí)現(xiàn)圖像逆運(yùn)算符。 我想提及一下,為簡(jiǎn)單起見(jiàn),我將在灰度圖像上運(yùn)行該運(yùn)算符。 但是,我會(huì)給您一些關(guān)于在彩色圖像上應(yīng)用運(yùn)算符的想法,并且我將把完整的程序留給您作為練習(xí)。

彩色圖像的第一件事是提取每個(gè)像素通道(即RGB)強(qiáng)度值。 為此,您可以使用Python Imaging Library(PIL) 。 繼續(xù)并從baboon.png下載示例狒狒圖像。 圖片大小為500x500 。 假設(shè)您要提取位于像素位置(325, 432)的紅色,綠色和藍(lán)色強(qiáng)度值。 可以按以下步驟完成:

from PIL import Imageim = Image.open('baboon.png') print im.getpixel((325,432))

根據(jù)文檔, getpixel()方法的作用是:

返回給定位置的像素值。

運(yùn)行上面的腳本后,您會(huì)注意到僅得到以下結(jié)果: 138 ! 但是,三個(gè)通道的(RGB)強(qiáng)度值在哪里? 問(wèn)題似乎與讀取圖像的mode有關(guān)。 通過(guò)運(yùn)行以下語(yǔ)句檢查模式:

print im.mode

您將獲得輸出P ,這意味著在調(diào)色板模式下讀取了圖像。 您可以做的一件事是在返回不同通道的強(qiáng)度值之前將圖像轉(zhuǎn)換為RGB模式。 為此,可以使用convert()方法,如下所示:

rgb_im = im.convert('RGB')

在這種情況下,您將返回以下值: (180, 168, 178) 。 這意味著紅色,綠色和藍(lán)色通道的強(qiáng)度值分別為180、168和178。

為了匯總到目前為止我們已經(jīng)描述的所有內(nèi)容,將返回圖像的RGB值的Python腳本如下所示:

from PIL import Imageim = Image.open('baboon.png') rgb_im = im.convert('RGB') print rgb_im.getpixel((325,432))

前進(jìn)到圖像逆運(yùn)算符之前,還剩一點(diǎn)。 上面的示例顯示了如何僅檢索一個(gè)像素的RGB值,但是執(zhí)行逆運(yùn)算符時(shí),您需要對(duì)所有像素執(zhí)行該操作。

要打印出每個(gè)像素不同通道的所有強(qiáng)度值,可以執(zhí)行以下操作:

from PIL import Imageim = Image.open('baboon.png') rgb_im = im.convert('RGB') width, height = im.sizefor w in range(width):for h in range(height):print rgb_im.getpixel((w,h))

在這一點(diǎn)上,我將作為練習(xí),讓您了解如何在每個(gè)像素的所有彩色圖像通道(即RGB)上應(yīng)用圖像反算子。

讓我們看一個(gè)將圖像逆運(yùn)算符應(yīng)用于灰度圖像的示例。 繼續(xù)并下載boat.tiff ,它將作為本節(jié)中的測(cè)試圖像。 看起來(lái)是這樣的:


我將使用scipy庫(kù)執(zhí)行此任務(wù)。 在上述圖像上應(yīng)用圖像逆運(yùn)算符的Python腳本應(yīng)如下所示:

import scipy.misc from scipy import misc from scipy.misc.pilutil import Imageim = Image.open('boat.tiff') im_array = scipy.misc.fromimage(im) im_inverse = 255 - im_array im_result = scipy.misc.toimage(im_inverse) misc.imsave('result.tiff',im_result)

讀取圖像后,我們要做的第一件事是將其轉(zhuǎn)換為ndarray ,以便對(duì)其應(yīng)用圖像逆運(yùn)算符。 應(yīng)用運(yùn)算符后,我們只需將ndarray轉(zhuǎn)換回圖像并將該圖像另存為result.tiff 。 下圖顯示了將圖像反向應(yīng)用到上方圖像的結(jié)果(原始圖像在左側(cè),而應(yīng)用圖像反向運(yùn)算符的結(jié)果在右側(cè)):


請(qǐng)注意,在應(yīng)用運(yùn)算符后,圖像的某些功能變得更加清晰。 例如,看右圖中的云層和燈塔。

冪律變換

該運(yùn)算符,也稱為伽瑪校正 ,是我們可以用來(lái)增強(qiáng)圖像的另一個(gè)運(yùn)算符。 讓我們看一下運(yùn)算符的方程式。 在像素(i,j) ,運(yùn)算符如下所示:

p(i,j) = kI(i,j)^gamma

I(i,j)是圖像位置(i,j)處的強(qiáng)度值; 和k和gamma是正常數(shù)。 我不會(huì)在這里詳細(xì)介紹數(shù)學(xué)細(xì)節(jié),但是我相信您可以在圖像處理書(shū)籍中找到有關(guān)此主題的詳盡說(shuō)明。 但是,重要的是要注意,在大多數(shù)情況下, k=1 ,因此我們將主要更改gamma的值。 因此,以上等式可以簡(jiǎn)化為:

p(i,j) = I(i,j)^gamma

我將在這里使用OpenCV和NumPy庫(kù)。 您可以查看我的教程N(yùn)umPy簡(jiǎn)介,以了解更多關(guān)于該庫(kù)的信息。 我們的測(cè)試圖像將再次是boat.tiff (繼續(xù)下載)。

執(zhí)行冪律變換運(yùn)算符的Python腳本如下所示:

import cv2 import numpy as npim = cv2.imread('boat.tiff') im = im/255.0 im_power_law_transformation = cv2.pow(im,0.6) cv2.imshow('Original Image',im) cv2.imshow('Power Law Transformation',im_power_law_transformation) cv2.waitKey(0)

注意,我們選擇的gamma值為0.6 。 下圖顯示了原始圖像以及在該圖像上應(yīng)用冪定律變換算符的結(jié)果(左圖顯示了原始圖像,右圖顯示了應(yīng)用冪律變換算符后的結(jié)果)。


上面的結(jié)果是當(dāng)gamma = 0.6 。 讓我們看看將gamma增加到1.5會(huì)發(fā)生什么,例如:


請(qǐng)注意,隨著我們?cè)黾觛amma值,圖像會(huì)變暗,反之亦然。

有人可能會(huì)問(wèn),冪律變換的用途是什么。 實(shí)際上,用于圖像獲取,打印和顯示的不同設(shè)備根據(jù)冪定律變換運(yùn)算符做出響應(yīng)。 這是由于人腦使用伽瑪校正來(lái)處理圖像這一事實(shí)。 例如,當(dāng)我們希望在計(jì)算機(jī)顯示器或電視屏幕上正確顯示圖像(所有圖像中顯示最佳圖像對(duì)比度)時(shí),伽馬校正就很重要。

結(jié)論

在本教程中,您學(xué)習(xí)了如何使用Python增強(qiáng)圖像。 您已經(jīng)了解了如何使用圖像逆運(yùn)算符來(lái)突出顯示特征,以及如何將冪定律變換視為在計(jì)算機(jī)監(jiān)視器和電視屏幕上正確顯示圖像的關(guān)鍵運(yùn)算符。

此外,請(qǐng)不要猶豫,看看我們?cè)贓nvato市場(chǎng)上可以出售和研究的東西 ,請(qǐng)?zhí)岢鋈魏螁?wèn)題,并使用下面的提要提供您的寶貴反饋。

翻譯自: https://code.tutsplus.com/articles/image-enhancement-in-python--cms-29289

總結(jié)

以上是生活随笔為你收集整理的Python中的图像增强的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。