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

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

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

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

numpy簡(jiǎn)介:

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

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

在上一篇python基本圖像操作中,當(dāng)載入圖像時(shí),通過(guò)調(diào)用 array() 方法將圖像轉(zhuǎn)換成NumPy的數(shù)組對(duì)象。NumPy 中的數(shù)組對(duì)象是多維的,可以用來(lái)表示向量、矩陣和圖像。通過(guò)對(duì)圖像的數(shù)組進(jìn)行直接操作,就可以完成很多圖像處理。

numpy的相關(guān)知識(shí)網(wǎng)上有很多資料,作為python科學(xué)計(jì)算的基礎(chǔ),還是非常值得認(rèn)真學(xué)習(xí)的。

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

認(rèn)識(shí)圖像數(shù)組:

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

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
#讀取圖片并轉(zhuǎn)為數(shù)組
im = array(Image.open("./source/test.jpg"))
#輸出數(shù)組的各維度長(zhǎng)度以及類型
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]

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

我們可以通過(guò)數(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)上有很多,就不過(guò)多敘述了。

運(yùn)行結(jié)果:

 這里寫(xiě)圖片描述

在轉(zhuǎn)為數(shù)組的過(guò)程中我們可以設(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ù)組的各維度長(zhǎng)度以及類型
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ù)

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

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

圖像數(shù)組的簡(jiǎn)單應(yīng)用——灰度變換:

灰度圖像:

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

可以通過(guò)下面幾種方法,將圖像轉(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;

通過(guò)上述任一種方法求得Gray后,將原來(lái)的RGB(R,G,B)中的R,G,B統(tǒng)一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來(lái)的RGB(R,G,B)就是灰度圖了。

之前已經(jīng)使用過(guò)很多次了,使用python可以通過(guò)使用convert(‘L')來(lái)獲得灰度圖

灰度變換:

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

下面程序中有一些簡(jiǎn)單的灰度變換:

#-*- 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 # 對(duì)圖像進(jìn)行反相處理
im3 = (100.0/255) * im + 100 # 將圖像像素值變換到 100...200 區(qū)間
im4 = 255.0 * (im/255.0)**2 # 對(duì)圖像像素值求平方后得到的圖像(二次函數(shù)變換,使較暗的像素值變得更小)
#2x2顯示結(jié)果 使用第一個(gè)顯示原灰度圖
subplot(221)
title('f(x) = x')
gray()
imshow(im)
#2x2顯示結(jié)果 使用第二個(gè)顯示反相圖
subplot(222)
title('f(x) = 255 - x')
gray()
imshow(im2)
#2x2顯示結(jié)果 使用第三個(gè)顯示100-200圖
subplot(223)
title('f(x) = (100/255)*x + 100')
gray()
imshow(im3)
#2x2顯示結(jié)果 使用第四個(gè)顯示二次函數(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é)果:

 這里寫(xiě)圖片描述

0 255
0 255
100 200
0 255

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

結(jié)語(yǔ):

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

相關(guān)文章

  • 詳解基于python的多張不同寬高圖片拼接成大圖

    詳解基于python的多張不同寬高圖片拼接成大圖

    這篇文章主要介紹了詳解基于python的多張不同寬高圖片拼接成大圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 教你用Python腳本快速為iOS10生成圖標(biāo)和截屏

    教你用Python腳本快速為iOS10生成圖標(biāo)和截屏

    這篇文章主要介紹了教你用Python快速為iOS10生成圖標(biāo)和截屏的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對(duì)話框

    Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對(duì)話框

    對(duì)于Python程序員來(lái)說(shuō),處理彈出窗口似乎并不是一個(gè)常見(jiàn)的任務(wù),這篇文章主要給大家介紹了關(guān)于Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對(duì)話框的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Pandas中迭代DataFrame行的方法總結(jié)

    Pandas中迭代DataFrame行的方法總結(jié)

    Python是進(jìn)行數(shù)據(jù)分析的一種很好的語(yǔ)言,主要是因?yàn)橐詳?shù)據(jù)為中心的Python包的奇妙生態(tài)系統(tǒng),本文主要為大家介紹了如何在Pandas中迭代DataFrame中的行,有需要的可以參考下
    2023-09-09
  • Python進(jìn)程通信之匿名管道實(shí)例講解

    Python進(jìn)程通信之匿名管道實(shí)例講解

    這篇文章主要介紹了Python進(jìn)程通信之匿名管道實(shí)例講解,本文直接給出代碼實(shí)例,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)線程池之線程安全隊(duì)列

    Python實(shí)現(xiàn)線程池之線程安全隊(duì)列

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)線程池之線程安全隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python數(shù)據(jù)結(jié)構(gòu)樹(shù)與算法分析

    Python數(shù)據(jù)結(jié)構(gòu)樹(shù)與算法分析

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)樹(shù)與算法分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Python編程實(shí)現(xiàn)下載器自動(dòng)爬取采集B站彈幕示例

    Python編程實(shí)現(xiàn)下載器自動(dòng)爬取采集B站彈幕示例

    這篇文章主要介紹了使用Python編程來(lái)實(shí)現(xiàn)一個(gè)下載器可以自動(dòng)爬取采集B站彈幕的示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-10-10
  • python多進(jìn)程間通信代碼實(shí)例

    python多進(jìn)程間通信代碼實(shí)例

    這篇文章主要介紹了python多進(jìn)程間通信代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Requests什么的通通爬不了的Python超強(qiáng)反爬蟲(chóng)方案!

    Requests什么的通通爬不了的Python超強(qiáng)反爬蟲(chóng)方案!

    今天帶大家學(xué)習(xí)Requests什么的通通爬不了的Python超強(qiáng)反爬蟲(chóng)方案,文中有非常詳細(xì)的圖文介紹及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

高陵县| 孙吴县| 五华县| 永济市| 内乡县| 平舆县| 普宁市| 措勤县| 峨边| 抚顺县| 呼伦贝尔市| 塘沽区| 北宁市| 阳高县| 顺义区| 油尖旺区| 额尔古纳市| 瓦房店市| 云林县| 红桥区| 台江县| 惠东县| 永城市| 靖州| 拉萨市| 德格县| 定远县| 九台市| 永川市| 尉氏县| 布尔津县| 元阳县| 鹰潭市| 吴江市| 江川县| 武平县| 贡山| 萨迦县| 孝义市| 五莲县| 且末县|