自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Numpy和Opencv完成基本圖像的數(shù)據(jù)分析(Part I)

大數(shù)據(jù) 數(shù)據(jù)分析
隨著科技的進(jìn)步,使用Python包訪問數(shù)字圖像的內(nèi)部變得更容易理解其屬性和性質(zhì),掌握對數(shù)字圖像處理的能力顯得是十分有必要。下面將向大家介紹如何使用NumPy和OpenCV對數(shù)字圖像進(jìn)行簡單的處理方法。

對于深度學(xué)習(xí)而言,很多任務(wù)都是與數(shù)字圖形處理打交道。這類任務(wù)的數(shù)據(jù)集一般是由很多張圖像構(gòu)成,有時(shí)候,當(dāng)原始圖像不能直接送入模型中時(shí),需要對其進(jìn)行一定的預(yù)處理操作,這時(shí)候就不得不向大家介紹一個(gè)十分有用的軟件包OpenCV,用它處理圖像起來非常方便,OpenCV是一個(gè)基于BSD許可發(fā)行的跨平臺計(jì)算機(jī)視覺庫,它輕量且高效,是由一系列C函數(shù)和少量C++類構(gòu)成,支持Python、MATLAB等語言接口,內(nèi)部包含了很多圖像處理的相關(guān)算法。下面將向大家介紹如何使用NumPy和OpenCV對數(shù)字圖像進(jìn)行簡單的處理方法:

關(guān)于像素的一些知識

在程序世界里,圖像輸入到計(jì)算機(jī)中時(shí),與人眼所見的圖像的形式不太一樣。計(jì)算機(jī)將圖像存儲為類似于馬賽克的小方塊,就像古老的方塊馬賽克藝術(shù)的形式。如果方形塊太大,那么就很難制作出光滑的邊緣和曲線。使用的方塊越小,則越平滑,或者說圖像的像素就越少,方塊的大小有時(shí)候也被稱為圖像的分辨率。

矢量圖像是存儲圖像的一些不同方法,目的是為了避免與像素相關(guān)的問題。但是,即使是矢量圖像,最終也會顯示為像素級的馬賽克。像素一詞表示圖像元素,描述每個(gè)像素的簡單方法是使用三種顏色的組合,即紅色(Red),綠色(Green),藍(lán)色(Blue),即我們平時(shí)所說的RGB圖像。

在RGB圖像中,每個(gè)像素由分別與紅色,綠色,藍(lán)色的值相關(guān)聯(lián)的三個(gè)8比特?cái)?shù)表示。假設(shè)使用放大鏡觀察,如果我們放大圖片,就會看到圖片是由微小的光點(diǎn)或更加具體的像素組成,更有趣的是,看到的那些小光點(diǎn)實(shí)際上是多個(gè)微小不同顏色的小光點(diǎn),且顏色只有紅色、綠色和藍(lán)色。

假設(shè)現(xiàn)在從遠(yuǎn)處觀察,創(chuàng)建一張圖像,可以看到一張圖像實(shí)際上由像素點(diǎn)值的開關(guān)決定(像素值為1表示開,像素值為0表示關(guān)),這些開關(guān)組合創(chuàng)建了圖像,基本上,我們每天在屏幕上看到的圖像都是這種。

每張圖像都以數(shù)字形式的像素組成,像素是構(gòu)成圖片的最小信息單位,通常是圓形或方形,且位于二維網(wǎng)格中。

現(xiàn)在,如果RGB三個(gè)值都處于全強(qiáng)度,這意味著其組合值為255,該值表示為白色,如果所有三種顏色都被減弱,或者值設(shè)置為0,其值表示為黑色。反過來,三者的不同組合將為我們提供不同特定的像素顏色。由于每個(gè)數(shù)字都是8比特,因此像素值的取值范圍為0-255,從下圖可以看到,但R的強(qiáng)度為37.3%,G的強(qiáng)度為45.9%,B的強(qiáng)度為18.8%時(shí),組合成的顏色為深綠(dark green)。

 

三種顏色的不同組合將產(chǎn)生不同的顏色,由于每個(gè)值可以具有256個(gè)不同的強(qiáng)度或亮度值,因此總共有1680萬(256 x 256 x 256)種不同組合。

圖像的基本知識介紹完畢后進(jìn)入正題,以下內(nèi)容將包含Numpy非?;镜膱D像數(shù)據(jù)分析、還有一些Python數(shù)據(jù)包,比如imageio,matplotlib等。本系列博客內(nèi)容結(jié)構(gòu)如下,先介紹前三個(gè)部分:

  • 導(dǎo)入圖像并觀察其屬性
  • 拆分圖層
  • 灰度化
  • 對像素值使用邏輯運(yùn)算符
  • 使用邏輯運(yùn)算符進(jìn)行掩碼
  • 衛(wèi)星圖像數(shù)據(jù)分析

導(dǎo)入圖像

下面加載圖像并觀察其各種屬性。注意,在輸入下面代碼請確保好已經(jīng)安裝好對應(yīng)的python數(shù)據(jù)包。

 

 

觀察圖像的基本屬性

 

其輸出

 

ndarray的形狀表明它是一個(gè)三維矩陣,輸出結(jié)果的前兩個(gè)數(shù)字分別表示高度(height)和寬度(width),第三個(gè)數(shù)字(即3)表示是該圖像是三通道彩色圖:紅色、綠色和藍(lán)色。因此,如果我們計(jì)算RGB圖像的大小,則總像素大小將是weiheigh x width x 3。

 

這些值對于驗(yàn)證而言是很重要的,因?yàn)?位顏色強(qiáng)度不能超出0到255范圍。

使用圖片可以分配變量,此外還可以訪問圖像的任何特定像素值,并且還可以分別訪問每個(gè)RGB通道。

 

在這種情況下:R = 109、G = 143、 B = 46,從這個(gè)配置可以看出該像素中有很多綠色,也可以通過三個(gè)通道的索引值來從中選擇出一個(gè)。根據(jù)一般規(guī)定:

  • 索引0表示紅色通道
  • 索引1表示綠色通道
  • 索引2表示藍(lán)色通道

但在OpenCV中,Images并不是按照RGB的順序規(guī)定,而是BGR。 imageio.imread將圖像加載為RGB(或RGBA),但OpenCV假定圖像為BGR或BGRA(BGR是OpenCVcolour的默認(rèn)的式)。

 

現(xiàn)在快速查看整個(gè)圖像中每個(gè)通道表示的圖像。

 

 

 

 

 

 

下面,也可以更改RGB的數(shù)值。例如,將下面行的紅色、綠色、,藍(lán)色圖層的值全部設(shè)置為全強(qiáng)度,即取值為255。

  • R通道:第100行到110行
  • G通道:第200行到210行
  • B通道:行300行到310行

本次測試只在一張圖像上進(jìn)行綜合處理,方便我們同時(shí)查看每個(gè)通道的值對圖像的影響。

 

 

 

 

 

 

為了更加清楚地對比分析,我們也改變部分列的像素值,這次測試同時(shí)更改RGB通道的值。

 

 

拆分圖層

通過以上測試,可以知道,圖像的每個(gè)像素點(diǎn)都是由三個(gè)整數(shù)表示。只需要拉出圖像陣列的正確切片,就可以將圖像分割成單獨(dú)的顏色分量。

 

 

灰度化

黑白圖像存儲在二維矩陣中,目前存在兩種類型的黑白圖像:

  • 灰度:灰色陰影的范圍:0~255
  • 二進(jìn)制:像素為黑色或白色:0或255

灰度處理過程,就是將圖像從全彩色轉(zhuǎn)換為灰度圖。在圖像處理工具中,例如:在OpenCV中,在使用很多含住之前,需要將圖像進(jìn)行灰度處理,這樣做是因?yàn)榛叶忍幚砗喕藞D像,幾乎像降噪一樣,這是因?yàn)榛叶葓D像中的信息比較少。

在python中有兩種方法可以將圖像轉(zhuǎn)換為灰度。但是,更直接的方法是使用matplotlib包,該包執(zhí)行的操作是獲取原始圖像的RGB值后進(jìn)行加權(quán)平均。

 

 

而通過GIMP將顏色轉(zhuǎn)換為灰度圖像有三種算法來完成任務(wù):

  • 亮度(Lightness)灰度等級計(jì)算為Lightness = ½×(max(R,G,B)+ min(R,G,B))
  • 照明度(Luminosity)灰度級將計(jì)算為Luminosity= 0.21×R + 0.7×G + 0.07×B
  • 平均亮度灰度級將計(jì)算為Average Brightness=(R + G + B)÷3

下面讓我們嘗試實(shí)現(xiàn)一下這三個(gè)算法中的一種吧,本文選擇Luminosity。

 

 

 

從圖中可以看到,圖像變?yōu)榱嘶叶葓D,且圖像矩陣變?yōu)榱硕S矩陣。

使用Numpy和Opencv完成圖像的基本數(shù)據(jù)分析(Part II)

作者:Mohammed Innat,機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)研究者

責(zé)任編輯:未麗燕 來源: 阿里云棲社區(qū)翻譯
相關(guān)推薦

2018-07-24 16:00:38

2018-08-30 17:50:30

圖像數(shù)據(jù)分析通道

2024-06-06 09:08:14

NumPyPython數(shù)據(jù)分析

2017-02-06 14:12:29

大數(shù)據(jù)數(shù)據(jù)分析基本思想

2023-11-23 08:58:45

PythonNumPy

2015-10-16 09:21:13

SparkMySQL數(shù)據(jù)分析

2020-05-15 17:18:40

豌豆BI數(shù)據(jù)分析

2023-02-24 14:40:24

ndarrayPython數(shù)據(jù)分析

2023-12-06 13:42:00

圖表可視化

2013-06-27 15:21:38

App

2021-09-06 09:00:00

大數(shù)據(jù)大數(shù)據(jù)分析技術(shù)

2012-08-28 10:52:58

IBMdW

2012-08-24 08:51:27

IBMdW

2021-09-10 14:05:14

預(yù)測分析大數(shù)據(jù)分析大數(shù)據(jù)

2024-03-04 11:10:01

2020-05-26 16:25:33

Hadoop下載安裝

2019-07-24 09:31:28

2025-02-10 12:00:00

圖像分類OpenCVPython

2023-02-23 19:21:51

NumPyPython數(shù)組

2015-08-14 10:28:09

大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號