目前市面上的圖片標記工具琳瑯滿目,不同的標記幾乎都能找到相對應的標記工具來使用,但是,能加以客制化適應特殊需求的卻不多,因此,本文試著開發一款segmentation標記的工具,能夠針對不同標記公司及用戶的需求以加入特定標記功能,也能夠兼容于特別指定的輸入輸出要求。
PixelAnnotationTool
PixelAnnotationTool是一款簡單方便的segmentation工具,之前所訓練的道路區域檢測模型,便是用這工具來標記道路區域。
優點:
1.支援Linux, Windows, Mac等平臺。
2.免費, 開源。
3.支持多標記:不同顏色代表不同的類別class,點選便可標記涂刷各種標記。
4.直接將segmentation結果存為png格式的mask檔。
5.可用鼠標圖片放大縮小,可進行精細的標記調整。
缺點:
1.自定類別繁鎖:預設為COCOdataset的類別,要修改為自己的類別須匯出config json檔后,自行修改再載入。
2.開啟一個檔案便會產生一個頁簽,超過某數量后便無法再開啟其它圖檔,需關閉頁簽后才能再開其它檔案。
3.使用點按方式調整透明度、筆篩大小等,但調整按鍵過小,且要重復點擊多次后才能到達需要的數值。
4.無法另外設定標記mask的儲存路徑,默認只能與dataset圖片放置于同一路徑。
5.標記mask圖片默認皆為輸出三張color_mask、_mask、_watershed_mask,名稱及種類無法更改。
自制的Segmentation Tool
自行開發的segmentation tool,可針對需求加以客制功能,例如,在碰到不曉得怎么標記的圖片,希望有個按鈕將此圖片移到指定文件夾,好讓其它人員來review教導。「刪除」的功能也是一樣,他們不希望圖片直接被刪除,而是移到指定區域,代表這些圖片不需要標記。此外,在輸入及輸出的圖片命名格式,也可依據需求來修改。
開發使用的組件
開發此Tool UI的工具是采用CVUI:https://dovyski.github.io/cvui/,這是一套另人印象深刻的好用工具,對于那些只想單純用OpenCV開發的人,不需要辛苦的用繪圖指令刻出各種按鈕組件了,CVUI已經替你作好,而且不僅僅是陽春簡單的版面。
不過,由于OpenCV本身就不支持顯示中文,因此,CVUI也無法顯示中文字型,這是唯一比較可惜的地方。
特色:
1.簡單、輕量
2.僅需要OpenCV無需其它組件
3.完全基于OpenCV繪圖產生,不需要OpenGL或Qt等套件
4.采用C開發,速度快
5.使用行列方式自動排列,不需擔心組件的位置
6.提供簡單功能完整的mouse API
7.不多不少的接口組件(約11個)
安裝:
pip install cvui
基本用法:
下方范例為產生一張空白的圖檔frame,然后再上面顯示Hello world!
注意原有的cv2.imshow 已被 cvui.imshow 所取代。
如果想用cv2.imshow,那么可在cv2.imshow之前先呼叫cvui.update()。cv2.imshow+cvui.update()就等于cvui.imshow()
importnumpy as np
importcv2
importcvui
WINDOW_NAME= ‘CVUI Test’
cvui.init(WINDOW_NAME)
frame =np.zeros((200, 400, 3), np.uint8)
whileTrue:
frame[:] = (49, 52, 49)
cvui.text(frame, 10, 15, ‘Hello world!’)
cvui.imshow(WINDOW1_NAME,frame)
if cv2.waitKey(20) == 27:
break
OpenCV畫面的priority
由于程序同時需顯示三個畫面:工具欄、編輯主畫面、放大畫面,這些畫面都是透過OpenCV的imshow()命令來執行,我們必須先呼叫setWindowProperty,讓工具欄及放大畫面的窗口皆保持在編輯主畫面上方,否則會被遮蓋(后方數字愈大則在愈上方)。
cv2.setWindowProperty(WINDOW_NAME,cv2.WND_PROP_TOPMOST, 1)
使用接口
總共分為三個窗口:工具欄、主圖片、以及Zoom放大三個窗口。
為了提供伊甸的標記人員操作方便,工具欄圖示特意放得較大,且以方便按到為原則,顯示文字也以直覺易懂為主。
1.點按數字0-9可調整圖片mask的透明度,確定mask是否正確。
2.筆刷調整,可于工具欄上預覽目前筆刷的大小。鼠標左鍵為白色,右鍵為黑色,代表在黑白的mask上增加及減少區域。
3.「存盤」按鈕:直接將目前看到mask所編修的畫面,存成黑白mask檔(png格式),若沒有按此鍵存檔就跳到其它張,不會儲存。
4.「不會」及「刪除」按鈕:此兩個按鈕會把目前圖片移到指定的區域(可在配置文件中修改域位置),方便事后作檢視的動作。
5.「上一張」及「下一張」:切換圖片使用。
6.Zoom放大區:放大預覽目前鼠標所在的區域。放大倍率可在配置文件中調整。
.ini 配置文件說明
[PATHS]
#待標注圖片的路徑(例如imagesf1)
source_path = images
#不曉得怎么標注的圖片, 要存放的路徑(「不會」按鈕)
unknown_path = unknown
#不需要標注的圖片, 要存放的路徑(「刪除」按鈕)
removed_path = dont_need
[DISPLAY]
#工具欄的方向:0為橫向, 1為蹤向。
tool_box = 1
[masks]
#是否要在標記完成所儲存的mask圖檔,文件名前方加上額外字符串。(空白代表不需要)
txt_prefix =
#是否要在標記完成所儲存的mask圖檔,文件名后方加上額外字符串。(空白代表不需要)
#下方范例,代表要加上 _mask 字符串,可讓PixelAnnotationTool程序讀取。
txt_append = _mask
#儲存的mask圖檔格式
ext_format = .png
#放大預覽的尺寸(單位為pixels)
zoom_size = 600
未來可加入的功能
針對不同的標記對象,可加入該對象相關的mask檢測功能。例如此次的目標物為人物,那么可加入訓練好的人物mask檢測模型,先替用戶產生預先mask好的圖片,讓用戶進行編修,以加快標記mask的速度。
審核編輯:劉清
-
OpenGL
+關注
關注
1文章
85瀏覽量
29408 -
OpenCV
+關注
關注
31文章
636瀏覽量
41784 -
python
+關注
關注
56文章
4813瀏覽量
85301
原文標題:影像Segmentation工具開發
文章出處:【微信號:易心Microbit編程,微信公眾號:易心Microbit編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
一款功能強大的串口監視、檢測、分析工具,Serial Monitor
一款實用的多功能開發調試工具H7-TOOL介紹
INGUN全新最小電動標記工具
INGUN全新最小電動標記工具
介紹一款基于go的windows信息收集工具
介紹一款有源濾波器的設計工具

一款專業且全面的嵌入式開發調試工具
一款用于Windows的開源反rookit (ARK)工具

安森美推出一款基于PLECS的具有獨特功能的領先在線仿真工具
如何一眼定位SQL的代碼來源:一款SQL染色標記的簡易MyBatis插件

評論