基于HSV空間色彩的圖像分割方法(含python代碼實現)

文章目錄

  • 1. 介紹
  • 2. HSV顏色空間
  • 3. python實現HSV圖像分割
    • 3.1. 代碼實現
    • 3.2. 運行結果


1. 介紹

HSV顏色系統簡介:
HSV 即使用色相(Hue)、飽和度(Saturation)、明度(Value)來表示色彩的一種方式。是一種在人們生活中常用的顏色系統,因為它符合人們描述顏色的方式——是什么顏色、顏色有多深、顏色有多亮

(1) H H H(色相,Hue):將顏色用0°~360°來表示,常見的色相與數值按照下表對應:

青色藍色品紅
60°120°180°240°300°360°

圖形可視化:

在這里插入圖片描述

(2) S S S(飽和度,saturation):是指色彩的純度,也可以理解為色彩的深淺度。對于同種色彩下飽和度越低則顏色越黯淡,并且有s∈[0,1)

在這里插入圖片描述

(3) V V V(明度,value):即顏色的明暗程度。數值越高越接近白色,數值越低越接近黑色且V∈[0,1)

在這里插入圖片描述

2. HSV顏色空間

????HSV顏色空間的模型對應于圓柱坐標系中的一個圓錐形子集
????圓錐的頂面:對應于 V = 1 V=1 V=1。 它包含RGB模型中的 R = 1 , G = 1 , B = 1 R=1,G=1,B=1 R=1,G=1,B=1 三個面,所代表的顏色較亮。
????色彩 H H H 由繞V軸(圓錐的中軸)的旋轉角給定。紅色對應于角度0° ,綠色對應于角度120°,藍色對應于角度240°。在HSV顏色模型中,每一種顏色和它的補色相差180° 。
????飽和度 S S S:取值從0到1,所以圓錐頂面的半徑為1。
????圓錐的頂點(即原點): V = 0 V=0 V=0 H H H S S S 無定義, 代表黑色。
????圓錐的頂面中心 S = 0 , V = 1 S=0,V=1 S=0,V=1 H H H無定義,代表白色。從該點到原點代表亮度漸暗的灰色,即具有不同灰度的灰色。對于這些點, S = 0 S=0 S=0 H H H的值無定義。
????在圓錐頂面的圓周上的顏色,V=1,S=1,這種顏色是純色。

在這里插入圖片描述

3. python實現HSV圖像分割

這里我采用的是IDRiD數據集中的一張圖片,目的是想試一下HSV在硬滲出物分割的表現:

在這里插入圖片描述

3.1. 代碼實現

from skimage.io import imread, imshow
from skimage import img_as_ubyte  # For converting the float image to uint8
from skimage import io, color
from skimage.color import rgb2hsv
from matplotlib import pyplot as plt
import numpy as npimage_path = "img.jpg"
rgb_image = io.imread(image_path)img_hsv = rgb2hsv(rgb_image)
# -------------轉換成HSV色彩空間----------------
fig, ax = plt.subplots(1, 3, figsize=(12,4))
ax[0].imshow(img_hsv[:,:,0], cmap='gray')
ax[0].set_title('Hue')
ax[1].imshow(img_hsv[:,:,1], cmap='gray')
ax[1].set_title('Saturation')
ax[2].imshow(img_hsv[:,:,2], cmap='gray')
ax[2].set_title('Value')
plt.show()
# --------------獲得每個HSV通道的強度值---------------
fig2, ax2 = plt.subplots(1, 3, figsize=(20, 5))
ax2[0].imshow(img_hsv[:,:,0],cmap='hsv')
ax2[0].set_title('hue')
ax2[1].imshow(img_hsv[:,:,1],cmap='hsv')
ax2[1].set_title('transparency')
ax2[2].imshow(img_hsv[:,:,2],cmap='hsv')
ax2[2].set_title('value')# 顯示colorbar,下面會用到colorbar設定閾值范圍
fig2.colorbar(imshow(img_hsv[:,:,0],cmap='hsv'))
# fig2.colorbar(imshow(img_hsv[:,:,1],cmap='hsv'))
# fig2.colorbar(imshow(img_hsv[:,:,2],cmap='hsv'))fig2.tight_layout()
plt.show()
# -------------根據colorbar挑選閾值----------------
# 設定hue的閾值范圍(色彩范圍):(0.07, 0.22)
lower_mask = img_hsv[:, :, 0] > 0.07
upper_mask = img_hsv[:, :, 0] < 0.22
# 設定saturation的閾值范圍(透明度范圍):(0.78, 1)
# 注:如果有上下界就類似上面hue閾值的設置,一個最高值一個最低值
saturation_mask = img_hsv[:, :, 1] > 0.78
# 設定value的閾值范圍(亮度范圍):(0.7, 1)
value_mask = img_hsv[:, :, 2] > 0.7mask = upper_mask * lower_mask * saturation_mask * value_maskred = rgb_image[:, :, 0] * mask
green = rgb_image[:, :, 1] * mask
blue = rgb_image[:, :, 2] * mask
img_masked = np.dstack((red, green, blue))imshow(img_masked)
plt.show()# Save the masked image as PNG
# io.imsave("img_masked.png", img_as_ubyte(img_masked))

3.2. 運行結果

(1)以 gray模式 顯示 Hue、Saturation、Value 三個通道
在這里插入圖片描述

(2)以 hsv模式 顯示 Hue、Saturation、Value 三個通道

在這里插入圖片描述

(3)分割結果圖

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HttpComponents: 領域對象的設計

1. HTTP協議 1.1 HTTP請求 HTTP請求由請求頭、請求體兩部分組成&#xff0c;請求頭又分為請求行(request line)和普通的請求頭組成。通過瀏覽器的開發者工具&#xff0c;我們能查看請求和響應的詳情。 下面是一個HTTP請求發送的完整內容。 POST https://track.abc.com/v4/tr…

根據對數器找規律、根據數據量猜題目解法

題目一 小虎去買蘋果&#xff0c;商店只提供兩種類型的塑料袋&#xff0c;每種類型都有任意數量。1&#xff09;能裝下6個蘋果的袋子2&#xff09;能裝下8個蘋果的袋子小虎可以自由使用兩種袋子來裝蘋果&#xff0c;但是小虎有強迫癥&#xff0c;他要求自己使用的袋子數量必須…

python門戶網站文件爬取并顯示

廣西南寧政府門面網站 import requests import os import io import numpy as np from concurrent.futures import ThreadPoolExecutor from bs4 import BeautifulSoup import time import pdfplumber import pandas as pd from docx import Document import docx import win32…

WordCount 源碼解析 Mapper,Reducer,Driver

創建包 com.nefu.mapreduce.wordcount &#xff0c;開始編寫 Mapper &#xff0c; Reducer &#xff0c; Driver 用戶編寫的程序分成三個部分&#xff1a; Mapper 、 Reducer 和 Driver 。 &#xff08; 1 &#xff09; Mapper 階段 ? 用戶自定義的 Mapper 要繼承自己的父…

文件服務器搭建

文件服務器搭建 文件服務器有四個選擇&#xff1a; httpd&#xff08;apache&#xff09; 穩定&#xff0c;使用廣泛&#xff0c;服務器一般自帶&#xff0c;對于開發人員來說強烈推薦。 nginx 穩定高效&#xff0c;使用廣泛&#xff0c;linux命令可直接下載&#xff0c;對…

STM32CubeIDE串口空閑中斷實現不定長數據接收

STM32F051空閑中斷實現串口不定長數據接收 目的編程軟件配置串口開中斷中斷程序運行結果目的 在串口輸入不定長數據時,通過串口空閑中斷來斷幀接收數據。 編程軟件 STM32CubeIDE STM32CubeMX配置MCU。通過對端口配置,自動生成程序,減少編程量。 配置串口開中斷 配置串口…

redis中序列化問題,value包含全路徑類名解析

1. 問題 redis中保存的key-value格式 value直接存入的是實體對象&#xff0c;值中包含全路徑類名&#xff0c;在使用Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer解析器時報錯 報錯內容&#xff1a; com.fasterxml.jackson.databind.exc.InvalidTypeI…

《師兄啊師兄》第二季確認定檔!海神揚名,穩健回歸!

近日&#xff0c;《師兄啊師兄》第二季的定檔海報和PV終于發布&#xff0c;確認將于12月14日上午10點強勢回歸&#xff01;這部備受矚目的國漫作品自第一季播出以來&#xff0c;便以其獨特的劇情設定和唯美的畫風&#xff0c;贏得了廣大觀眾的喜愛。如今&#xff0c;動畫第二季…

第一課【習題】給應用添加通知和提醒

構造進度條模板通知&#xff0c;name字段當前需要固定配置為downloadTemplate。 給通知設置分發時間&#xff0c;需要設置showDeliveryTime為false。 OpenHarmony提供后臺代理提醒功能&#xff0c;在應用退居后臺或退出后&#xff0c;計時和提醒通知功能被系統后臺代理接管…

Qt 5.15.2 三維顯示功能

Qt 5.15.2 三維顯示功能 三維顯示效果&#xff1a; .pro項目文件 QT core gui opengl 3dcore 3drender 3dinput 3dextrasgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In ord…

2023年法國經銷商Solu-Watt來訪安科瑞-安科瑞 蔣靜

2023年4月10日上午9點&#xff0c;法國Solu-Watt公司Matthieu先生一行到安科瑞考察參觀工廠的智能化出入庫工作站、柔性化儀表生產車間及實驗室。自1992年以來&#xff0c;Solu-Watt在電氣設備市場中不斷發展。能夠提供量身定制的安裝有線電氣解決方案&#xff08;電氣柜、接線…

如何用Qt配置git項目并上傳Gitee

1.進入到Qt項目文件夾內&#xff0c;打開 “Git Bash Here” 2.初始化&#xff0c;在“Git Bash Here”中輸入 git init 3.加入所有文件&#xff0c;在“Git Bash Here”中輸入 git add . (需要注意&#xff0c;git add 后面還有一個點) 4.添加備注&#xff0c;git com…

STL源碼剖析筆記——哈希表、unordered_set、unordered_map、unordered_mutiset、unordered_mutimap

系列文章目錄 STL源碼剖析筆記——迭代器 STL源碼剖析筆記——vector STL源碼剖析筆記——list STL源碼剖析筆記——deque、stack&#xff0c;queue STL源碼剖析筆記——Binary Heap、priority_queue STL源碼剖析筆記——AVL-tree、RB-tree、set、map、mutiset、mutimap STL源…

一套rk3588 rtsp服務器推流的 github 方案及記錄 -01

我不生產代碼&#xff0c;我只是代碼的搬運工&#xff0c;相信我&#xff0c;看完這個文章你的圖片一定能變成流媒體推出去。 訴求&#xff1a;使用opencv拉流&#xff0c;轉成bgr數據&#xff0c;需要把處理后的數據&#xff08;BGR&#xff09;編碼成264&#xff0c;然后推流…

字符串函數strtok

1.調用格式&#xff1a; 2.調用形式&#xff1a;char*strtok(char*p1,const char*p2),其中第二個是由分隔符組成的字符串&#xff0c;第一個為需要分隔的字符串 3.調用目的&#xff1a;將分隔符之間的字符串取出 4.調用時一般將源字符串拷貝后調用&#xff0c;因為此函數會將…

基于Unity3D 低多邊形地形模型紋理貼圖

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

【工程實踐】使用modelscope下載大模型文件

前言 Modelscope&#xff08;魔搭社區&#xff09;是阿里達摩院的一款開源模型平臺&#xff0c;里面提供了很多的熱門模型供使用體驗&#xff0c;其中的模型文件可以通過git clone 快速下載。并且為模型提供了Notebook的快速開發體驗&#xff0c;使用阿里云服務&#xff0c;不需…

【優選算法系列】【專題二滑動窗口】第三節.904. 水果成籃和438. 找到字符串中所有字母異位詞

文章目錄 前言一、水果成籃 1.1 題目描述 1.2 題目解析 1.2.1 算法原理 1.2.2 代碼編寫 1.2.3 題目總結二、找到字符串中所有字母異位詞 2.1 題目描述 2.2 題目解析 2.2.1 算法原理 2.2.2 代碼編寫 …

SAP UI5 walkthrough step9 Component Configuration

在之前的章節中&#xff0c;我們已經介紹完了MVC的架構和實現&#xff0c;現在我們來講一下&#xff0c;SAPUI5的結構 這一步&#xff0c;我們將所有的UI資產從index.html里面獨立封裝在一個組件里面 這樣組件就變得獨立&#xff0c;可復用了。這樣&#xff0c;無所什么時候我…

隊列的實現

學習就像一段長跑&#xff0c;比的不是誰跑得快&#xff0c;而是誰更能堅持&#xff01;&#xff01; 1 隊列的概念及結構 隊列&#xff1a;只允許在一端進行插入數據操作&#xff0c;在另一端進行刪除數據操作的特殊線性表&#xff0c;隊列具有先進先出 FIFO(First In First O…