在线观看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

    文章

    1297

    瀏覽量

    56830
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41445

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

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

收藏 人收藏

    評論

    相關推薦

    OpenCV4.8 CUDA編程代碼教程

    OpenCV4支持通過GPU實現CUDA加速執行,實現對OpenCV圖像處理程序的加速運行,當前支持加速的模塊包括如下。
    的頭像 發表于 12-05 09:56 ?1089次閱讀
    <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

    Yuzuki Lizard 全志V851S開發板 –編譯 OPENCV 4.5.4

    ,設定) 到此編譯成功 6、編譯出來的文件 動態庫文件 /usr/local/lib/ 文件庫 /usr/local/include/opencv4/ 注意下面步驟成功編譯出來的固件,是不含動態庫
    發表于 05-08 09:22

    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 ?565次閱讀

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

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

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

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

    如何在Raspberry Pi 3上安裝OpenCV4

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

    OpenCV4SIFT算法概述

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

    OpenCV4源碼分析

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

    學習OpenCV4的系統化路線圖

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

    OpenCV4筆記之連通域分析

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

    OpenCV4圖像分析之BLOB特征分析

    BLOB是圖像灰度塊的種專業稱呼,更加變通點的可以說它跟我們前面二值圖像分析聯通組件類似
    的頭像 發表于 12-28 12:28 ?1445次閱讀
    <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 ?1323次閱讀
    主站蜘蛛池模板: 五月婷婷深爱| 五月综合激情网| 欧美黑人巨大xxxx猛交| 日黄网站| 色多多视频成人影院| 色爱区综合| 日本黄色免费看| 欧美日韩不卡码一区二区三区| 李老汉的性生生活1全部| 一级aaaaa毛片免费视频| 免费一级毛片清高播放| 午夜在线观看免费观看大全| 91一区二区三区四区五区| 免费看美女的逼| 久久99久久精品免费思思6| 国产三级a三级三级野外| 欧美3d成人动画在线| 久久精品久| 99日精品欧美国产| 手机在线你懂的| 天天夜干| 成成人看片在线| 天天躁日日2018躁狠狠躁| 加勒比在线视频| 手机看片1024在线观看| 寂寞午夜影院| 49vv婷婷网| 日本69xxxxxxxx69| 男女艹逼软件| 免费男女| 性喷潮久久久久久久久| 欧美性video精品| 三级色图| 久久青青草原精品老司机| 欧美日韩一日韩一线不卡| 国产在线观看网址你懂得| 天天综合天天综合色在线| 521色香蕉网在线观看免费| 国产天美| 中国人69xxx大全| 国产美女精品久久久久中文|