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

Python圖像處理之二值化處理

 更新時間:2024年05月06日 12:36:58   作者:牛右刀薛面  
所謂”二值化處理“就是將矩陣中每個點的RGB值(0,0,0)[黑色]或者(255,255,255)[白色],這篇文章主要介紹了Python圖像處理之二值化處理,需要的朋友可以參考下

1、什么是二值化處理

我們都知道,圖像是由矩陣構成,矩陣中每個點的RGB值都不一樣,呈現(xiàn)出來的色彩不一樣,最終整體呈現(xiàn)給我們的就是一張彩色的圖像。所謂”二值化處理“就是將矩陣中每個點的RGB值(0,0,0)[黑色]或者(255,255,255)[白色]

2、為什么要進行二值化處理

早期人們使用計算機處理圖像是,實在圖像灰度化處理的基礎上在進行操作的,但是當時的硬件水平不足,所以處理速度很慢,于是人們引入了圖像二值化處理。二值化處理使得原本顏色的取值范圍從256種變?yōu)?種,確實是提高了計算速度,但是丟失的信息也多了,因此具體采用什么方式處理,要根據(jù)具體情況來選擇。

3、如何進行二值化處理

(1)簡單閾值

簡單閾值是選取一個全局閾值,然后把整幅圖像分成非黑即白的二值圖像,灰度值大于閾值就賦為255反之為0。

ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINAR)

返回值一: 閾值,(Otsu‘s二值化會用到)
返回值二: 處理以后的圖像
參數(shù)一: 初始圖像
參數(shù)二:我們自己設定的閾值
參數(shù)三: 當圖像像素置超過我們的設定的閾值時賦為255
參數(shù)四 : 我們設定的二值化類型

閾值小于閾值大于閾值
THRESH_BINARY置0置填充色
THRESH_BINARY_INV置填充色0
THRESH_TRUNC保持原色置灰色
THRESH_TOZERO置0保持原色
THRESH_TOZERO_INV保持原色置0

注:cv2.threshold最后一個參數(shù)可以寫為0,1,2,3,4按順序對應表格中的五種
代碼如下

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('dog.jpeg', 0)  # 直接讀為灰度圖像
ret, thresh1 = cv2.threshold(img, 127, 255, 0)
ret, thresh2 = cv2.threshold(img, 127, 255, 1)
ret, thresh3 = cv2.threshold(img, 127, 255, 2)
ret, thresh4 = cv2.threshold(img, 127, 255, 3)
ret, thresh5 = cv2.threshold(img, 127, 255, 4)
titles = ['img', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
for i in range(6):
    plt.subplot(2, 3, i + 1), plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()

在這里插入圖片描述

注:將閾值大于127的像素值置為255

(2)自適應閾值

簡單閾值的方式過于粗魯,自適應閾值更趨向于局部性的閾值,也就是說,將像素點的像素值與該點所在的區(qū)域的像素值的平均值(最大值,中位數(shù)等)決定該店屬于0還是1

th2 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_MEAN_C,0,11,2)

返回值: 處理后返回的圖像
參數(shù)一: 原始圖像
參數(shù)二:像素值上限
參數(shù)三:自適應方法
— cv2.ADAPTIVE_THRESH_MEAN_C :領域內均值
—cv2.ADAPTIVE_THRESH_GAUSSIAN_C :領域內像素點加權和
參數(shù)四:賦值方式(參考簡單閾值中介紹的表格)
參數(shù)五:設定方陣的大小(因為是將一個點與其周圍的方陣數(shù)據(jù)對比)
參數(shù)六:常數(shù),每個區(qū)域計算出的閾值的基礎上在減去這個常數(shù)作為這個區(qū)域的最終閾值,可以為負數(shù)

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('dog.jpeg',0)
img = cv.medianBlur(img,5)
ret,th1 = cv.threshold(img,127,255,cv.THRESH_BINARY)
th2 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_MEAN_C,0,11,2)
th3 = cv.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,0,11,2)
titles = ['Original Image', 'Global Thresholding (v = 127)',
            'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]
for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

在這里插入圖片描述

(3)Otsu’s二值化

對于簡單閾值,cv2.threshold()的第二個參數(shù)是我們自己設定的閾值范圍,一張圖片的最好的閾值分界線不是憑感覺看出來的,而是有合理的方式能找到的,threshold的第一個返回值就是處理圖片的閾值分界線。因此,只要在threshold函數(shù)的最后一個參數(shù)在原有的基礎上加上’cv2.THRESH_OTSU‘那么第一個返回值就是最佳閾值。直接看代碼更好理解。
注:OTSU非常適合灰度直方圖具有雙峰值的情況

import cv2
import matplotlib.pyplot as plt
img = cv2.imread('cat.jpg', 0)  # 直接讀為灰度圖像
# 簡單濾波
ret1, th1 = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
print(ret1)
# Otsu 濾波
ret2, th2 = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
print(ret2)
plt.figure()
plt.subplot(221), plt.imshow(img,'gray')
plt.subplot(222), plt.hist(img.ravel(), 256)  # .ravel方法將矩陣轉化為一維
plt.subplot(223), plt.imshow(th1,'gray')
plt.subplot(224), plt.imshow(th2,'gray')
plt.show()

在這里插入圖片描述

4、參考文獻:

https://numpy.org/doc/stable/reference/generated/numpy.hstack.html
https://zhuanlan.zhihu.com/p/360824614
https://blog.csdn.net/jjddss/article/details/72841
https://blog.csdn.net/li_l_il/article/details/86767790
https://blog.csdn.net/JNingWei/article/details/77747959
https://blog.csdn.net/weixin_35732969/article/details/83779660

聲明:部分圖像源自網(wǎng)絡,本文僅供學習交流使用,如果不妥,請聯(lián)系刪除。

到此這篇關于Python圖像處理之二值化處理的文章就介紹到這了,更多相關Python二值化處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • pandas dataframe rolling移動計算方式

    pandas dataframe rolling移動計算方式

    在Pandas中,rolling()方法用于執(zhí)行移動窗口計算,常用于時間序列數(shù)據(jù)分析,例如,計算某商品的7天或1個月銷售總量,可以通過rolling()輕松實現(xiàn),該方法的關鍵參數(shù)包括window(窗口大?。?min_periods(最小計算周期)
    2024-09-09
  • Python3?DataFrame缺失值的處理方法

    Python3?DataFrame缺失值的處理方法

    這篇文章主要介紹了Python3?DataFrame缺失值的處理,包括缺失值的判斷缺失值數(shù)據(jù)的過濾及缺失值數(shù)據(jù)的填充,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 利用Python將圖片批量轉化成素描圖的過程記錄

    利用Python將圖片批量轉化成素描圖的過程記錄

    萬能的Python真的是除了不會生孩子,其他的還真不在話下,下面這篇文章主要給大家介紹了關于如何利用Python將圖片批量轉化成素描圖的相關資料,需要的朋友可以參考下
    2021-08-08
  • tensorflow2.10使用BERT實現(xiàn)Semantic Similarity過程解析

    tensorflow2.10使用BERT實現(xiàn)Semantic Similarity過程解析

    這篇文章主要為大家介紹了tensorflow2.10使用BERT實現(xiàn)Semantic Similarity過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • pyqt4教程之實現(xiàn)windows窗口小示例分享

    pyqt4教程之實現(xiàn)windows窗口小示例分享

    這篇文章主要介紹了pyqt4實現(xiàn)windows窗口小示例,需要的朋友可以參考下
    2014-03-03
  • 使用python socket分發(fā)大文件的實現(xiàn)方法

    使用python socket分發(fā)大文件的實現(xiàn)方法

    今天小編就為大家分享一篇使用python socket分發(fā)大文件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python?tkinter實現(xiàn)彈窗的輸入輸出

    python?tkinter實現(xiàn)彈窗的輸入輸出

    這篇文章主要為大家詳細介紹了python?tkinter實現(xiàn)彈窗的輸入輸出,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用pygame編寫Flappy bird小游戲

    使用pygame編寫Flappy bird小游戲

    這篇文章主要介紹了使用pygame編寫Flappy bird小游戲的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python調用.NET庫的方法步驟

    Python調用.NET庫的方法步驟

    這篇文章主要介紹了Python調用.NET庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 解決reload(sys)后print失效的問題

    解決reload(sys)后print失效的問題

    這篇文章主要介紹了解決reload(sys)后print失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評論

左权县| 竹山县| 长垣县| 石泉县| 泸溪县| 喀喇| 颍上县| 武威市| 古交市| 尚志市| 漠河县| 武清区| 沙坪坝区| 江北区| 布拖县| 宁德市| 射阳县| 尉犁县| 若尔盖县| 阳西县| 泽州县| 碌曲县| 筠连县| 威远县| 灵璧县| 垫江县| 沙洋县| 嘉义市| 焦作市| 尼玛县| 池州市| 买车| 兴文县| 稷山县| 靖西县| 临泉县| 丰顺县| 故城县| 高密市| 同德县| 四平市|