
Python圖像灰度變換及圖像數(shù)組操作
使用python以及numpy通過直接操作圖像數(shù)組完成一系列基本的圖像處理
numpy簡介:
NumPy是一個非常有名的 Python 科學(xué)計(jì)算工具包,其中包含了大量有用的工具,比如數(shù)組對象(用來表示向量、矩陣、圖像等)以及線性代數(shù)函數(shù)。
數(shù)組對象可以實(shí)現(xiàn)數(shù)組中重要的操作,比如矩陣乘積、轉(zhuǎn)置、解方程系統(tǒng)、向量乘積和歸一化。這為圖像變形、對變化進(jìn)行建模、圖像分類、圖像聚類等提供了基礎(chǔ)。
在上一篇python基本圖像操作中,當(dāng)載入圖像時(shí),通過調(diào)用 array() 方法將圖像轉(zhuǎn)換成NumPy的數(shù)組對象。NumPy 中的數(shù)組對象是多維的,可以用來表示向量、矩陣和圖像。通過對圖像的數(shù)組進(jìn)行直接操作,就可以完成很多圖像處理。
numpy的相關(guān)知識網(wǎng)上有很多資料,作為python科學(xué)計(jì)算的基礎(chǔ),還是非常值得認(rèn)真學(xué)習(xí)的。
使用圖像數(shù)組進(jìn)行基本圖像操作:
認(rèn)識圖像數(shù)組:
通過下面這幾個程序我們看一下圖像與灰度圖的圖像數(shù)組,以及numpy數(shù)組的切片。
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片并轉(zhuǎn)為數(shù)組
im = array(Image.open("./source/test.jpg"))
#輸出數(shù)組的各維度長度以及類型
print im.shape,im.dtype
#輸出位于坐標(biāo)100,100,顏色通道為r的像素值
print im[100,100,0]
#輸出坐標(biāo)100,100的rgb值
print im[100,100]及類型
print im.shape,im.dtype
運(yùn)行結(jié)果:
(600, 500, 3) uint8
64
[ 64 117 195]
我們看到的是一個三維數(shù)組,分別代表橫坐標(biāo),縱坐標(biāo)和顏色通道。
我們可以通過數(shù)組把紅藍(lán)通道交換
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片并轉(zhuǎn)為數(shù)組
im = array(Image.open("./source/test.jpg"))
#紅色通道
r = im[:,:,0]
#交換紅藍(lán)通道并顯示
im[:,:,0] = im[:,:,2]
im[:,:,2] = r
imshow(im)
show()
這里用到了numpy數(shù)組的切片方式,關(guān)于numpy的資料網(wǎng)上有很多,就不過多敘述了。
運(yùn)行結(jié)果:
在轉(zhuǎn)為數(shù)組的過程中我們可以設(shè)定數(shù)據(jù)類型,同時(shí)灰度圖的圖像數(shù)組也是有意義的:
# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片,灰度化,并轉(zhuǎn)為數(shù)組
im = array(Image.open("./source/test.jpg").convert('L'),'f')
#輸出數(shù)組的各維度長度以及類型
print im.shape,im.dtype
#輸出坐標(biāo)100,100的值
print im[100,100]
運(yùn)行結(jié)果:
(600, 500) float32
110.0
額外的參數(shù)‘f'將數(shù)組的數(shù)據(jù)類型轉(zhuǎn)為浮點(diǎn)數(shù)
由于灰度圖沒有顏色信息,所以形狀元組只有兩個數(shù)值
*array()變換的相反操作可以使用PIL的fromarray()完成,如im = Image.fromarray(im)
圖像數(shù)組的簡單應(yīng)用——灰度變換:
灰度圖像:
灰度數(shù)字圖像是每個像素只有一個采樣顏色的圖像。這類圖像通常顯示為從最暗黑色到最亮的白色的灰度。
可以通過下面幾種方法,將圖像轉(zhuǎn)換為灰度:
1.浮點(diǎn)算法:Gray=R*0.3+G*0.59+B*0.11
2.整數(shù)方法:Gray=(R*30+G*59+B*11)/100
3.移位方法:Gray =(R*76+G*151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.僅取綠色:Gray=G;
通過上述任一種方法求得Gray后,將原來的RGB(R,G,B)中的R,G,B統(tǒng)一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。
之前已經(jīng)使用過很多次了,使用python可以通過使用convert(‘L')來獲得灰度圖
灰度變換:
將圖像讀入 NumPy 數(shù)組對象后,我們可以對它們執(zhí)行任意數(shù)學(xué)操作。一個簡單的例子就是圖像的灰度變換。即任意函數(shù) f ,它將 0…255 區(qū)間(或者 0…1 區(qū)間)映射到自身。
下面程序中有一些簡單的灰度變換:
#-*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片,灰度化,并轉(zhuǎn)為數(shù)組
im = array(Image.open("./source/test.jpg").convert('L'))
im2 = 255 - im # 對圖像進(jìn)行反相處理
im3 = (100.0/255) * im + 100 # 將圖像像素值變換到 100...200 區(qū)間
im4 = 255.0 * (im/255.0)**2 # 對圖像像素值求平方后得到的圖像(二次函數(shù)變換,使較暗的像素值變得更小)
#2x2顯示結(jié)果 使用第一個顯示原灰度圖
subplot(221)
title('f(x) = x')
gray()
imshow(im)
#2x2顯示結(jié)果 使用第二個顯示反相圖
subplot(222)
title('f(x) = 255 - x')
gray()
imshow(im2)
#2x2顯示結(jié)果 使用第三個顯示100-200圖
subplot(223)
title('f(x) = (100/255)*x + 100')
gray()
imshow(im3)
#2x2顯示結(jié)果 使用第四個顯示二次函數(shù)變換圖
subplot(224)
title('f(x) =255 *(x/255)^2')
gray()
imshow(im4)
#輸出圖中的最大和最小像素值
print int(im.min()),int(im.max())
print int(im2.min()),int(im2.max())
print int(im3.min()),int(im3.max())
print int(im4.min()),int(im4.max())
show()
運(yùn)行結(jié)果:
0 255
0 255
100 200
0 255
可以比較明顯的看到灰度變換的結(jié)果,,第二張圖被反相顯示,第三張圖像的暗部變亮,亮部變暗,其值被限制在100到200之間,其中最后一張圖像通過二次函數(shù)變換使較暗的像素值變得更暗。
結(jié)語:
本篇介紹了python使用圖像數(shù)組去進(jìn)行圖像操作的過程,包括幾個簡單的實(shí)例,通過數(shù)組我們可以對圖像進(jìn)行任意數(shù)學(xué)操作,是圖像變形、圖像分類、圖像聚類等的基礎(chǔ),希望我的博客對大家有所幫助
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時(shí)代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03