国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

OpenCV——分水嶺算法

這篇具有很好參考價(jià)值的文章主要介紹了OpenCV——分水嶺算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、分水嶺算法

1、概述

??分水嶺算法是一種圖像分割常用的算法,可以有效地將圖像中的目標(biāo)從背景中分離出來。本文以O(shè)penCV庫中的分水嶺算法為基礎(chǔ),介紹圖像分割中的常用概念和算法原理,并結(jié)合實(shí)際案例展示分水嶺算法的應(yīng)用。

2、圖像分割概念

??圖像分割指的是將圖像分成多個(gè)不同的區(qū)域或?qū)ο蟮倪^程。圖像分割是計(jì)算機(jī)視覺和圖像處理領(lǐng)域中的重要問題,包括物體檢測(cè)、形狀分析、三維重建、醫(yī)學(xué)圖像處理等眾多應(yīng)用。對(duì)于圖像分割,有四種典型的方法:

  • 閾值分割:基于給定的閾值將圖像分成兩個(gè)區(qū)域。

  • 區(qū)域生長:從種子像素開始生長,合并與種子相鄰的像素來形成區(qū)域。

  • 邊緣檢測(cè):通過檢測(cè)圖像中的邊緣,將圖像分割成不同的對(duì)象。

  • 基于聚類的方法:利用聚類算法將圖像分成多個(gè)區(qū)域。

3、分水嶺算法原理

??分水嶺算法是一種基于圖論的圖像分割算法,它將圖像看成一個(gè)拓?fù)鋱D,把亮度值看成高度,水從高處向低處流動(dòng),在高處建立分界線,將圖像分割成多個(gè)區(qū)域。分水嶺算法包含以下四個(gè)步驟:

  1. 載入圖像并轉(zhuǎn)化為灰度圖像。

  2. 對(duì)灰度圖像進(jìn)行形態(tài)學(xué)變換,以抑制圖像中的噪聲和平滑圖像。

  3. 計(jì)算距離變換,找到不同區(qū)域之間的分界線,將其看成浸沒的水平面。

  4. 利用分界線將圖像分成多個(gè)區(qū)域。

二、主要函數(shù)

??cv::watershed 函數(shù)實(shí)現(xiàn)了基于距離變換的分水嶺算法。該函數(shù)的原型如下:

void watershed(InputArray image, 
               InputOutputArray markers
               );
  • image:輸入的圖像,必須為8位的3通道彩色圖像。
  • markers:輸出的標(biāo)記圖像,必須為單通道32位整型圖像。

在使用cv::watershed函數(shù)進(jìn)行分水嶺算法分割時(shí),需要先進(jìn)行前期處理,包括圖像的預(yù)處理和創(chuàng)建標(biāo)記圖像。

三、C++代碼

#include <opencv2\opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
	Mat img, imgGray, imgMask;
	Mat maskWaterShed;  // watershed()函數(shù)的參數(shù)
	img = imread("HoughLines.jpg");  //原圖像
	if (img.empty())
	{
		cout << "請(qǐng)確認(rèn)圖像文件名稱是否正確" << endl;
		return -1;
	}
	cvtColor(img, imgGray, COLOR_BGR2GRAY);
	//提取邊緣并進(jìn)行閉運(yùn)算
	Canny(imgGray, imgMask, 150, 300);
	Mat k = getStructuringElement(0, Size(3, 3));
	morphologyEx(imgMask, imgMask, MORPH_CLOSE, k);
	imshow("邊緣圖像", imgMask);
	imshow("原圖像", img);

	//計(jì)算連通域數(shù)目
	vector<vector<Point>> contours;
	vector<Vec4i> hierarchy;
	findContours(imgMask, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE);
	//在maskWaterShed上繪制輪廓,用于輸入分水嶺算法
	maskWaterShed = Mat::zeros(imgMask.size(), CV_32S);
	for (int index = 0; index < contours.size(); index++)
	{
		drawContours(maskWaterShed, contours, index, Scalar::all(index + 1),
			-1, 8, hierarchy, INT_MAX);
	}
	//分水嶺算法   需要對(duì)原圖像進(jìn)行處理
	watershed(img, maskWaterShed);

	vector<Vec3b> colors;  // 隨機(jī)生成幾種顏色
	for (int i = 0; i < contours.size(); i++)
	{
		int b = theRNG().uniform(0, 255);
		int g = theRNG().uniform(0, 255);
		int r = theRNG().uniform(0, 255);
		colors.push_back(Vec3b((uchar)b, (uchar)g, (uchar)r));
	}

	Mat resultImg = Mat(img.size(), CV_8UC3);  //顯示圖像
	for (int i = 0; i < imgMask.rows; i++)
	{
		for (int j = 0; j < imgMask.cols; j++)
		{
			// 繪制每個(gè)區(qū)域的顏色
			int index = maskWaterShed.at<int>(i, j);
			if (index == -1)  // 區(qū)域間的值被置為-1(邊界)
			{
				resultImg.at<Vec3b>(i, j) = Vec3b(255, 255, 255);
			}
			else if (index <= 0 || index > contours.size())  // 沒有標(biāo)記清楚的區(qū)域被置為0 
			{
				resultImg.at<Vec3b>(i, j) = Vec3b(0, 0, 0);
			}
			else  // 其他每個(gè)區(qū)域的值保持不變:1,2,…,contours.size()
			{
				resultImg.at<Vec3b>(i, j) = colors[index - 1];  // 把些區(qū)域繪制成不同顏色
			}
		}
	}

	resultImg = resultImg * 0.6 + img * 0.4;
	imshow("分水嶺結(jié)果", resultImg);
	waitKey(0);
	return 0;
}

四、結(jié)果展示

1、原始圖像

OpenCV——分水嶺算法,OpenCV 圖像/點(diǎn)云處理,算法,opencv,計(jì)算機(jī)視覺,3d,c++

2、分割結(jié)果

OpenCV——分水嶺算法,OpenCV 圖像/點(diǎn)云處理,算法,opencv,計(jì)算機(jī)視覺,3d,c++

五、參考鏈接

[1] 【OpenCv】圖像分割——分水嶺算法文章來源地址http://www.zghlxwxcb.cn/news/detail-526897.html

到了這里,關(guān)于OpenCV——分水嶺算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • OpenCV——分水嶺算法

    OpenCV——分水嶺算法

    ??分水嶺算法是一種圖像分割常用的算法,可以有效地將圖像中的目標(biāo)從背景中分離出來。本文以O(shè)penCV庫中的分水嶺算法為基礎(chǔ),介紹圖像分割中的常用概念和算法原理,并結(jié)合實(shí)際案例展示分水嶺算法的應(yīng)用。 ??圖像分割指的是將圖像分成多個(gè)不同的區(qū)域或?qū)ο蟮倪^程

    2024年02月12日
    瀏覽(27)
  • [圖像處理]14.分割算法比較 OTSU算法+自適應(yīng)閾值算法+分水嶺

    [圖像處理]14.分割算法比較 OTSU算法+自適應(yīng)閾值算法+分水嶺

    參考文獻(xiàn): OTSU閾值分割+孔洞填充+海陸分離_SwordKii的博客-CSDN博客 drawContours函數(shù)_普通網(wǎng)友的博客-CSDN博客_drawcontours R329-opencv閾值分割算法——自適應(yīng)閾值_Third Impact的博客-CSDN博客_opencv自適應(yīng)閾值分割 分水嶺算法的python實(shí)現(xiàn)及解析_進(jìn)不去的博客-CSDN博客_python分水嶺算法 分水

    2024年02月09日
    瀏覽(25)
  • OPENCV實(shí)戰(zhàn)分水嶺法一

    2024年02月09日
    瀏覽(25)
  • 圖像分割 - 分水嶺算法

    目錄 1. 介紹 2.? 分水嶺算法的實(shí)現(xiàn) 距離變換 連接連通分量 3. 代碼 圖像是由x,y表示的,如果將灰度值也考慮進(jìn)去的話,那么一幅圖像需要一個(gè)三維的空間去表

    2024年02月02日
    瀏覽(31)
  • (數(shù)字圖像處理MATLAB+Python)第十章圖像分割-第四,五節(jié):分水嶺分割和綜合案例

    (數(shù)字圖像處理MATLAB+Python)第十章圖像分割-第四,五節(jié):分水嶺分割和綜合案例

    分水嶺分割 :圖像處理中常用的一種分割方法,它基于圖像中灰度或顏色的變化來劃分不同的區(qū)域。分水嶺分割算法的原理是基于地理學(xué)上的分水嶺概念。將圖像看作一個(gè) 地貌圖 ,在圖像中低洼的部分被看作水池,而高處則表示山脈。通過在圖像中加入水并讓其逐漸充滿,

    2024年02月10日
    瀏覽(96)
  • 【實(shí)戰(zhàn)篇:粘連物體分割——利用分水嶺算法實(shí)現(xiàn)糖豆分割檢測(cè)】

    【實(shí)戰(zhàn)篇:粘連物體分割——利用分水嶺算法實(shí)現(xiàn)糖豆分割檢測(cè)】

    通過pycharm安裝時(shí)空門 問題: 講一下分水嶺算法的原理、實(shí)現(xiàn)步驟、以及應(yīng)用。 回答: 分水嶺算法是一種基于圖像變換與分割的圖像分析算法,主要用于圖像分割。該算法可以解決很多圖像處理領(lǐng)域的問題,例如醫(yī)學(xué)圖像分析、面部識(shí)別、數(shù)字水印等。下面將詳細(xì)介紹分水嶺

    2024年02月03日
    瀏覽(34)
  • 比特幣上市首日:重要分水嶺!

    比特幣上市首日:重要分水嶺!

    作者:秦晉 如果按美國東部時(shí)間計(jì)算,今天是比特幣現(xiàn)貨ETF上市交易的第一天。也是具有歷史紀(jì)念意義的一天。昨天,美國證券交易委員會(huì)正式批準(zhǔn)11只比特幣現(xiàn)貨ETF進(jìn)入證券交易所展開交易。這是加密金融與傳統(tǒng)金融之間的一個(gè)重要「分水嶺」時(shí)刻。 比特幣現(xiàn)貨ETF在開市交

    2024年01月16日
    瀏覽(25)
  • [SDR] GNU Radio 系列教程(十四) —— GNU Radio 低階到高階用法的分水嶺 ZMQ 的使用詳解

    目錄 1、前言 2、ZMQ 塊的類型 3、ZMQ 塊的使用 4、DEMO 4.1 同一臺(tái)電腦上的兩個(gè)流程圖 4.2 不同電腦上的兩個(gè)流程圖 4.3 作為 REQ/REP 服務(wù)器的 Python 程序 4.4 作為 PUSH/PULL 服務(wù)器的 Python 程序 4.5 處理流程圖數(shù)據(jù)的 Python 程序 參考鏈接 學(xué)會(huì)使用 GNU Radio 中的 ZMQ,是從低階使用者向高階

    2023年04月26日
    瀏覽(28)
  • 自學(xué)SLAM(6)相機(jī)與圖像實(shí)踐:OpenCV處理圖像與圖像拼接(點(diǎn)云)

    自學(xué)SLAM(6)相機(jī)與圖像實(shí)踐:OpenCV處理圖像與圖像拼接(點(diǎn)云)

    如果寫過SLAM14講第一次的作業(yè),或者看過我之前的運(yùn)行ORB_SLAM2教程應(yīng)該都安裝過OpenCV了,如果沒有安裝,沒關(guān)系,可以看我之前的博客,里面有如何安裝OpenCV。 鏈接: 運(yùn)行ORB-SLAM2(含OpenCV的安裝) 讓我們先來看一段代碼,學(xué)習(xí)一下OpenCV的函數(shù)調(diào)用。 改代碼中,演示了如下幾

    2024年02月06日
    瀏覽(20)
  • OpenCV 圖像處理算法和技術(shù)的應(yīng)用實(shí)踐

    圖像處理算法和技術(shù)在計(jì)算機(jī)視覺和圖像處理領(lǐng)域發(fā)揮著重要作用,通過對(duì)圖像進(jìn)行分析、增強(qiáng)和轉(zhuǎn)換,可以提取出有用的信息并解決實(shí)際問題。本文將以圖像處理算法和技術(shù)的應(yīng)用實(shí)踐為中心,為你介紹一些常見的圖像處理算法和技術(shù),并通過實(shí)例展示它們?cè)趯?shí)際應(yīng)用中的

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包