欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python圖像灰度變換及圖像數(shù)組操作

 更新時間:2016年01月27日 12:00:44   作者:MingChaoSun  
這篇文章主要介紹了Python圖像灰度變換及圖像數(shù)組操作的相關資料,需要的朋友可以參考下

使用python以及numpy通過直接操作圖像數(shù)組完成一系列基本的圖像處理

numpy簡介:

NumPy是一個非常有名的 Python 科學計算工具包,其中包含了大量有用的工具,比如數(shù)組對象(用來表示向量、矩陣、圖像等)以及線性代數(shù)函數(shù)。

數(shù)組對象可以實現(xiàn)數(shù)組中重要的操作,比如矩陣乘積、轉置、解方程系統(tǒng)、向量乘積和歸一化。這為圖像變形、對變化進行建模、圖像分類、圖像聚類等提供了基礎。

在上一篇python基本圖像操作中,當載入圖像時,通過調用 array() 方法將圖像轉換成NumPy的數(shù)組對象。NumPy 中的數(shù)組對象是多維的,可以用來表示向量、矩陣和圖像。通過對圖像的數(shù)組進行直接操作,就可以完成很多圖像處理。

numpy的相關知識網(wǎng)上有很多資料,作為python科學計算的基礎,還是非常值得認真學習的。

使用圖像數(shù)組進行基本圖像操作:

認識圖像數(shù)組:

通過下面這幾個程序我們看一下圖像與灰度圖的圖像數(shù)組,以及numpy數(shù)組的切片。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片并轉為數(shù)組
im = array(Image.open("./source/test.jpg"))
#輸出數(shù)組的各維度長度以及類型
print im.shape,im.dtype
#輸出位于坐標100,100,顏色通道為r的像素值
print im[100,100,0]
#輸出坐標100,100的rgb值
print im[100,100]及類型
print im.shape,im.dtype

運行結果:

(600, 500, 3) uint8
64
[ 64 117 195]

我們看到的是一個三維數(shù)組,分別代表橫坐標,縱坐標和顏色通道。

我們可以通過數(shù)組把紅藍通道交換

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片并轉為數(shù)組
im = array(Image.open("./source/test.jpg"))
#紅色通道
r = im[:,:,0]
#交換紅藍通道并顯示
im[:,:,0] = im[:,:,2]
im[:,:,2] = r
imshow(im)
show()

這里用到了numpy數(shù)組的切片方式,關于numpy的資料網(wǎng)上有很多,就不過多敘述了。

運行結果:

 這里寫圖片描述

在轉為數(shù)組的過程中我們可以設定數(shù)據(jù)類型,同時灰度圖的圖像數(shù)組也是有意義的:

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片,灰度化,并轉為數(shù)組
im = array(Image.open("./source/test.jpg").convert('L'),'f')
#輸出數(shù)組的各維度長度以及類型
print im.shape,im.dtype
#輸出坐標100,100的值
print im[100,100]

運行結果:

(600, 500) float32
110.0

額外的參數(shù)‘f'將數(shù)組的數(shù)據(jù)類型轉為浮點數(shù)

由于灰度圖沒有顏色信息,所以形狀元組只有兩個數(shù)值

*array()變換的相反操作可以使用PIL的fromarray()完成,如im = Image.fromarray(im)

圖像數(shù)組的簡單應用——灰度變換:

灰度圖像:

灰度數(shù)字圖像是每個像素只有一個采樣顏色的圖像。這類圖像通常顯示為從最暗黑色到最亮的白色的灰度。

可以通過下面幾種方法,將圖像轉換為灰度:

1.浮點算法: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)就是灰度圖了。

之前已經使用過很多次了,使用python可以通過使用convert(‘L')來獲得灰度圖

灰度變換:

將圖像讀入 NumPy 數(shù)組對象后,我們可以對它們執(zhí)行任意數(shù)學操作。一個簡單的例子就是圖像的灰度變換。即任意函數(shù) f ,它將 0…255 區(qū)間(或者 0…1 區(qū)間)映射到自身。

下面程序中有一些簡單的灰度變換:

#-*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片,灰度化,并轉為數(shù)組
im = array(Image.open("./source/test.jpg").convert('L'))
im2 = 255 - im # 對圖像進行反相處理
im3 = (100.0/255) * im + 100 # 將圖像像素值變換到 100...200 區(qū)間
im4 = 255.0 * (im/255.0)**2 # 對圖像像素值求平方后得到的圖像(二次函數(shù)變換,使較暗的像素值變得更小)
#2x2顯示結果 使用第一個顯示原灰度圖
subplot(221)
title('f(x) = x')
gray()
imshow(im)
#2x2顯示結果 使用第二個顯示反相圖
subplot(222)
title('f(x) = 255 - x')
gray()
imshow(im2)
#2x2顯示結果 使用第三個顯示100-200圖
subplot(223)
title('f(x) = (100/255)*x + 100')
gray()
imshow(im3)
#2x2顯示結果 使用第四個顯示二次函數(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()

運行結果:

 這里寫圖片描述

0 255
0 255
100 200
0 255

可以比較明顯的看到灰度變換的結果,,第二張圖被反相顯示,第三張圖像的暗部變亮,亮部變暗,其值被限制在100到200之間,其中最后一張圖像通過二次函數(shù)變換使較暗的像素值變得更暗。

結語:

本篇博客介紹了python使用圖像數(shù)組去進行圖像操作的過程,包括幾個簡單的實例,通過數(shù)組我們可以對圖像進行任意數(shù)學操作,是圖像變形、圖像分類、圖像聚類等的基礎,希望我的博客對大家有所幫助~

相關文章

  • 使用python模擬高斯分布例子

    使用python模擬高斯分布例子

    今天小編就為大家分享一篇使用python模擬高斯分布例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python 用struct模塊解決黏包問題

    python 用struct模塊解決黏包問題

    這篇文章主要介紹了python 用struct模塊解決黏包問題,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決

    Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決

    這篇文章主要介紹了Django makemigrations migrate執(zhí)行成功但不創(chuàng)建數(shù)據(jù)庫表的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python 點擊指定位置驗證碼破解的實現(xiàn)代碼

    Python 點擊指定位置驗證碼破解的實現(xiàn)代碼

    這篇文章主要介紹了Python 點擊指定位置驗證碼破解的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Python爬蟲實戰(zhàn)項目掌握酷狗音樂的加密過程

    Python爬蟲實戰(zhàn)項目掌握酷狗音樂的加密過程

    在常見的幾個音樂網(wǎng)站里,酷狗可以說是最好爬取的啦,什么彎都沒有,所以最適合小白入門爬蟲,本篇針對爬蟲零基礎的小白,所以每一步驟我都截圖并詳細解釋了,其實我自己看著都啰嗦,歸根到底就是兩個步驟的請求,還請大佬繞路勿噴
    2021-09-09
  • pandas使用之寬表變窄表的實現(xiàn)

    pandas使用之寬表變窄表的實現(xiàn)

    這篇文章主要介紹了pandas使用之寬表變窄表的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python程序中的線程操作 concurrent模塊使用詳解

    python程序中的線程操作 concurrent模塊使用詳解

    這篇文章主要介紹了python程序中的線程操作 concurrent模塊使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • python使用SMTP發(fā)送qq或sina郵件

    python使用SMTP發(fā)送qq或sina郵件

    這篇文章主要為大家詳細介紹了python使用SMTP發(fā)送qq或sina郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • django富文本編輯器的實現(xiàn)示例

    django富文本編輯器的實現(xiàn)示例

    這篇文章主要介紹了django富文本編輯器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 理論講解python多進程并發(fā)編程

    理論講解python多進程并發(fā)編程

    這篇文章主要從理論方面講解python多進程并發(fā)編程的相關知識點,如果你也想學習這方面的知識,參考下吧。
    2018-02-02

最新評論