在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV4中聯通組件分析的一個缺點

OpenCV學堂 ? 來源:OpenCV學堂 ? 2024-01-04 15:51 ? 次閱讀

數據集

最近別人給了我一個生物數據分割的標注數據集,讓我訓練一下,發現這個數據集比較詭異,圖像格式是tif的16位的浮點數,OpenCV讀取過來要顯示得先轉換,然后它的Mask是PNG的帶透明通道,最坑人的是Mask標記都是1、只有相互連接的對象標記才相互不同。官方給出的原始圖像解析以后是這樣:

0c28d444-aad6-11ee-8b88-92fbcf53809c.png

OpenCV讀取顯示圖像樣本

OpenCV讀取tif格式16位的圖像在于imread的第二個參數,默認情況下會轉換為BGR彩色八位字節的圖像,如果這樣就是一片漆黑;這里選擇為-1表示不改變原圖像的通道數據信息,這樣就可以讀取原始圖像數據了,然后轉換為32f的,再歸一化到0~1之間,直接顯示即可。代碼如下:

importnumpyasnp
img=cv.imread("D:/11111.tif",-1)#uint16
img_16=img.astype(np.float32)
cv.normalize(img_16,img_16,0,1,cv.NORM_MINMAX)
img_16.astype(np.float32)
result=np.uint8(img_16*255)
cv.imwrite('D:/tensor_cv2.jpg',result)

0c32a4a6-aad6-11ee-8b88-92fbcf53809c.jpg

OpenCV讀取顯示Mask圖像

Mask圖像是帶透明通道的RGBA的圖像,但是實際上所有的標注信息只存在于red通道中,所以讀取以后,直接拆分通道,然后把red通道數據作為灰度圖像處理,因為灰度值太低了,顯示的時候我給擴大了點倍數,直接把灰度圖像扔到聯通組件掃描的函數中,然后就可以看到結果了。相關代碼如下:

importnumpyasnp
img=cv.imread("D:/11111.png")#uint16
bb,gg,rr=cv.split(img)
h,w,c=img.shape
print(img.shape,img.dtype)
numOfcons,labels=cv.connectedComponents(rr)

colors=[]
foriinrange(numOfcons):
b=np.random.randint(0,256)
g=np.random.randint(0,256)
r=np.random.randint(0,256)
colors.append((b,g,r))

colors[0]=(0,0,0)
image=np.zeros((h,w,3),dtype=np.uint8)
forrowinrange(h):
forcolinrange(w):
image[row,col]=colors[labels[row,col]]

cv.imshow("coloredlabels",image)
cv.imwrite("D:/opencv_labels.png",image)
cv.imshow("bgr",rr*100)
cv.waitKey(0)
cv.destroyAllWindows()

標記的Mask信息原圖

0c3b9584-aad6-11ee-8b88-92fbcf53809c.jpg

基于聯通組件查找以后的彩色顯示(注意白色粘連)

0c49233e-aad6-11ee-8b88-92fbcf53809c.png

對比與解決

對比之后發現,OpenCV中聯通組件掃描以后把不同標簽的樣本粘連在一起了,這個是因為OpenCV尋找聯通組件只分為兩種值0為背景,非0就作為前景,不做灰度級別區分的聯通域識別,所以導致了粘連。這個時候,只要用skimage庫的函數來替換OpenCV的聯通組件掃描就可以避免粘連了,因為skimage庫的聯通組件掃描支持獨立標簽分級。代碼演示如下:

importskimage.io
importskimage.morphology

#Loadoneimageafteruncompressingmasks.zip
gt=skimage.io.imread("D:/11111.png")

#Keepfirstchannelonly
gt=gt[:,:,0]

#Labelindependentconnectedcomponents
gt=skimage.morphology.label(gt)
colors=[]
foriinrange(150):
b=np.random.randint(0,256)
g=np.random.randint(0,256)
r=np.random.randint(0,256)
colors.append((b,g,r))
colors[0]=(0,0,0)
h,w=gt.shape
image=np.zeros((h,w,3),dtype=np.uint8)
forrowinrange(h):
forcolinrange(w):
image[row,col]=colors[gt[row,col]]

#Displayimageoruseasneeded
cv.imshow("coloredlabels",image)
cv.imwrite("D:/labels.png",image)
cv.waitKey(0)
cv.destroyAllWindows()
運行結果對比 - 可以發現白色區域沒有粘連,成功分割!

0c4f4af2-aad6-11ee-8b88-92fbcf53809c.png

希望OpenCV遲早有一天可以支持這種分級的區域聯通組件掃描算法







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像處理
    +關注

    關注

    27

    文章

    1326

    瀏覽量

    57808
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42545

原文標題:新知 | OpenCV4中聯通組件分析的一個缺點

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    OpenCV4.8 CUDA編程代碼教程

    OpenCV4支持通過GPU實現CUDA加速執行,實現對OpenCV圖像處理程序的加速運行,當前支持加速的模塊包括如下。
    的頭像 發表于 12-05 09:56 ?1396次閱讀
    <b class='flag-5'>OpenCV</b>4.8 CUDA編程代碼教程

    OpenCV自帶組件HighGUI怎么使用?

    將介紹OpenCV自帶組件HighGUI的簡單使用。當我們在測試算法,查看算法效果的時候,需要用到可視化,動態調參的界面,也可能需要監聽鼠標,鍵盤等的動作,這時,HighGUI就發揮大作用了,HighGUI作為
    發表于 11-05 06:54

    魯班貓0 -安裝opencv

    ON要等那么會兒,結事之后就可以make了:sudo make -j4這里就是漫長的等待,我這里大約兩小時結束結束后執行sudo make install配置#opencv4.pc
    發表于 04-09 13:29

    CMake在Linux 6.1.1-1.0.0搜索包opencv損壞了嗎?

    我有 cmake 項目,使用以下 CMake 語句從 Yocto Linux SDK 導入 OpenCV 庫: find_package (需要OpenCV ) 在
    發表于 05-09 11:32

    中聯通公開招募3G電子渠道合作企業

    中聯通公開招募3G電子渠道合作企業      12月11日消息,中國聯通12月10日發布公告,開始面向社會公開招募社會電子渠
    發表于 12-11 09:42 ?609次閱讀

    基于opencv4和Yolo-Fastest,實現PC和單片機通信,控制步進電機捕獲目標

    效果視頻 基于opencv4和yolo,實現PC和單片機通信,控制步進電機捕獲目標
    發表于 11-23 17:36 ?16次下載
    基于<b class='flag-5'>opencv4</b>和Yolo-Fastest,實現PC和單片機通信,控制步進電機捕獲目標

    使用Raspberry Pi構建OpenCV人群計數裝置

    在本教程,我們將使用 Raspberry Pi 和 ThingSpeak 構建 OpenCV 人群計數。
    的頭像 發表于 08-12 17:24 ?3507次閱讀
    使用Raspberry Pi構建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>OpenCV</b>人群計數裝置

    分享兩OpenCV圖像處理與分析的問題

    仔細觀察圖,可以看到兩最直接的是靶心有十字交叉線,而在OpenCV形態學處理,支持十字交叉結構元素,所以我們可以先檢測兩條線,然后獲取十字交叉結構,最后對結構進行輪廓
    的頭像 發表于 08-22 09:40 ?1170次閱讀

    如何在Raspberry Pi 3上安裝OpenCV4

    今天我們將學習如何在 Raspberry Pi 3 上安裝 OpenCV4 庫,以便我們可以將其用于計算機視覺應用程序。這將允許 OpenCV 在像 Pi 這樣的便攜式設備上運行,從而打開許多可能性的大門。所以讓我們開始吧
    的頭像 發表于 09-08 16:09 ?1876次閱讀
    如何在Raspberry Pi 3上安裝<b class='flag-5'>OpenCV4</b>庫

    OpenCV4SIFT算法概述

    SIFT特征是非常穩定的圖像特征,在圖像搜索、特征匹配、圖像分類檢測等方面應用十分廣泛,但是它的缺點也是非常明顯,就是計算量比較大,很難實時,所以對些實時要求比較高的常見SIFT算法還是無法適用。
    的頭像 發表于 11-23 09:48 ?1747次閱讀

    OpenCV4源碼分析

    宏定義必須寫在函數之外,其作用域是 #define 開始,到源程序結束。如果要提前結束它的作用域則用 #undef 命令
    的頭像 發表于 02-22 10:00 ?1370次閱讀
    <b class='flag-5'>OpenCV4</b>源碼<b class='flag-5'>分析</b>

    學習OpenCV4的系統化路線圖

    OpenCV4發布測試版本開始,作者就直關注!根據自己近十年圖像處理OpenCV開發相關工作經驗,花了七月的時間,針對OpenCV4
    的頭像 發表于 07-05 11:30 ?879次閱讀
    學習<b class='flag-5'>OpenCV4</b>的系統化路線圖

    OpenCV4筆記之連通域分析

    連通:若 S 是圖像像素子集,對于任意的 。如果存在條由 S 像素組成的從 p 到 q 的通路,則稱 p 在像素集 S
    的頭像 發表于 12-25 17:16 ?1638次閱讀
    <b class='flag-5'>OpenCV4</b>筆記之連通域<b class='flag-5'>分析</b>

    OpenCV4圖像分析之BLOB特征分析

    BLOB是圖像灰度塊的種專業稱呼,更加變通點的可以說它跟我們前面二值圖像分析聯通組件類似
    的頭像 發表于 12-28 12:28 ?1939次閱讀
    <b class='flag-5'>OpenCV4</b>圖像<b class='flag-5'>分析</b>之BLOB特征<b class='flag-5'>分析</b>

    opencv-python和opencv樣嗎

    樣。OpenCV(Open Source Computer Vision Library)是開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。
    的頭像 發表于 07-16 10:38 ?1988次閱讀
    主站蜘蛛池模板: 天天操欧美 | 2021久久精品国产99国产精品 | 国产成人精品亚洲日本在线 | 日韩一卡2卡三卡4卡无卡网站 | 婷婷激情小说网 | 婷婷射丁香 | 插插插操操操 | 日韩欧美中文在线 | 成人黄色在线网站 | 加勒比色综合 | 欧美极品色影院 | 伊人久久亚洲综合天堂 | 国产成人永久免费视频 | 啪啪影城 | 色综合天天综合网国产成人网 | 午夜黄页网站在线播放 | 毛片在线网| 国产精品久久久久久久免费 | 亚洲аv电影天堂网 | 亚洲第一伊人 | 亚洲欧美卡通 动漫 丝袜 | 日本在线视频一区 | 四虎永久免费最新在线 | 七月婷婷精品视频在线观看 | 好大好紧好爽好湿润视频 | 狠狠色噜噜狠狠狠狠91 | 中文字幕在线天堂 | 男女爱爱免费高清 | 国产精品欧美激情第一页 | 91色蝌蚪| 美女扒开内裤让男人桶 | 五月激激 | 亚洲国产精品va在线观看麻豆 | 西西人体44rt高清午夜 | 6080yy午夜不卡一二三区 | 国产在线永久视频 | 国内精品91久久久久 | 亚洲91精品 | 亚洲天天 | 久久草在线观看 | 免费h网站在线观看 |