- OpenCV 4 with Python Blueprints
- Dr. Menua Gevorgyan Arsen Mamikonyan Michael Beyeler
- 230字
- 2021-06-24 16:50:03
Applying morphological closing for smoothening
A common problem with segmentation is that a hard threshold typically results in small imperfections (that is, holes, as in the preceding image) in the segmented region. These holes can be alleviated by using morphological opening and closing. When it is opened, it removes small objects from the foreground (assuming that the objects are bright on a dark foreground), whereas closing removes small holes (dark regions).
This means that we can get rid of the small black regions in our mask by applying morphological closing (dilation followed by erosion) with a small 3 x 3-pixel kernel, as follows:
kernel = np.ones((3, 3), np.uint8)
frame = cv2.morphologyEx(frame, cv2.MORPH_CLOSE, kernel)
The result looks a lot smoother, as follows:
Notice, however, that the mask still contains regions that do not belong to the hand or arm, such as what appears to be one of the knees on the left and some furniture on the right. These objects just happen to be on the same depth layer of my arm and hand. If possible, we could now combine the depth information with another descriptor, maybe a texture- or skeleton-based hand classifier that would weed out all non-skin regions.
An easier approach is to realize that most of the time, hands are not connected to knees or furniture. Let's learn how to find connected components in a segmentation mask.
- Learning Microsoft Windows Server 2012 Dynamic Access Control
- C語言程序設計教程
- Raspberry Pi for Python Programmers Cookbook(Second Edition)
- 程序員面試筆試寶典(第3版)
- Developing Mobile Web ArcGIS Applications
- 機器人Python青少年編程開發(fā)實例
- Backbone.js Blueprints
- PhpStorm Cookbook
- 數據結構習題解析與實驗指導
- Haskell Data Analysis Cookbook
- 新一代SDN:VMware NSX 網絡原理與實踐
- Python開發(fā)基礎
- Using Yocto Project with BeagleBone Black
- 嵌入式C編程實戰(zhàn)
- 現代C++語言核心特性解析