当前位置: 首页 > wzjs >正文

企业社交网站定制wordpress用户功能增强

企业社交网站定制,wordpress用户功能增强,13572074638网站建设,做空压机网站的公司有哪些OpenCV图像二值化 图像二值化(Binarization)是图像预处理中的一种常用技术,其目的是将图像中的像素值分为两个类别——通常是“前景”和“背景”或者说0和255。二值化能够简化图像信息,为后续的形态学处理、边缘检测、目标识别等…

OpenCV图像二值化

图像二值化(Binarization)是图像预处理中的一种常用技术,其目的是将图像中的像素值分为两个类别——通常是“前景”和“背景”或者说0和255。二值化能够简化图像信息,为后续的形态学处理、边缘检测、目标识别等任务提供基础。本文将介绍二值化的基本概念、全局二值化、三角二值化和自适应二值化的原理与实现

1. 二值化基本概念

二值化将一幅灰度图像中的像素值根据阈值 TT 分为两类:

  • 当像素值大于 TT 时,将其设为最大值(如 255);
  • 当像素值小于或等于 TT 时,将其设为最小值(如 0)。

数学上可以表示为:

g ( x , y ) = { maxValue , if  f ( x , y ) > T 0 , if  f ( x , y ) ≤ T g(x,y)=\begin{cases}\text{maxValue}, & \text{if } f(x,y) > T \\0, & \text{if } f(x,y) \leq T\end{cases} g(x,y)={maxValue,0,if f(x,y)>Tif f(x,y)T

其中f(x,y)为原始图像像素值,g(x,y) 为二值化后的像素值。

2. 全局阈值二值化

全局阈值二值化是最简单的二值化方法,它使用一个固定阈值对整幅图像进行处理。OpenCV 提供了 cv::threshold 函数来实现这一过程。

2.1 cv::threshold 函数

函数原型如下:

double threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type);
  • 返回值:函数返回所使用的阈值,当使用 THRESH_OTSUTHRESH_TRIANGLE 时,该值为计算出的最佳阈值,否则返回 thresh
  • src:输入灰度图像。
  • dst:输出二值图像。
  • thresh:阈值 TT
  • maxval:当像素值大于阈值时赋予的值(通常为 255)。
  • type
    • THRESH_BINARY:像素值大于阈值时设为最大值,否则设为 0。
    • THRESH_BINARY_INV:像素值大于阈值时设为 0,否则设为最大值。
    • THRESH_TRUNC:像素值大于阈值时设为阈值,否则保持原值。
    • THRESH_TOZERO:像素值大于阈值时保持原值,否则设为 0。
    • THRESH_TOZERO_INV:像素值大于阈值时设为 0,否则保持原值。
    • THRESH_OTSU:自动计算最佳阈值,并使用 THRESH_BINARY 进行二值化。
    • THRESH_TRIANGLE:基于直方图形状分析自动选择阈值,适用于单峰或近似单峰直方图。
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main() {// 读取灰度图像Mat gray = imread("E:/image/lena.png", IMREAD_GRAYSCALE);if (gray.empty()) {cerr << "图像加载失败!" << endl;return -1;}imshow("原图", gray);Mat binary;// 使用不同阈值类型进行二值化threshold(gray, binary, 128, 255, THRESH_BINARY);imshow("THRESH_BINARY", binary);threshold(gray, binary, 128, 255, THRESH_BINARY_INV);imshow("THRESH_BINARY_INV", binary);threshold(gray, binary, 128, 255, THRESH_TRUNC);imshow("THRESH_TRUNC", binary);threshold(gray, binary, 128, 255, THRESH_TOZERO);imshow("THRESH_TOZERO", binary);threshold(gray, binary, 128, 255, THRESH_TOZERO_INV);imshow("THRESH_TOZERO_INV", binary);waitKey(0);destroyAllWindows();return 0;
}

在上述示例中使用了128作为阈值,推荐平均值作为阈值效果会好。我们使用了不同的阈值类型进行二值化,并分别显示了处理后的结果如下图。
全局二值化

3. Otsu’s 自动阈值法

当图像的灰度直方图呈双峰分布时,Otsu 自动阈值法可以自动选择最佳阈值,从而实现自适应二值化。使用方法是在 cv::threshold 函数中加入 THRESH_OTSU 标志。

3.1 Otsu 示例代码

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main() {Mat gray = imread("E:/image/lena.png", IMREAD_GRAYSCALE);if (gray.empty()) {cerr << "图像加载失败!" << endl;return -1;}Mat binary;// thresh 参数可以设为 0,Otsu 算法会自动计算最佳阈值double otsu_thresh_val = threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);cout << "Otsu 自动选择的阈值为:" << otsu_thresh_val << endl;imshow("原始灰度图像", gray);imshow("Otsu 二值化", binary);waitKey(0);return 0;
}

Otsu二值化

4. 三角二值化(Triangle Thresholding)

三角二值化(Triangle Thresholding)是一种基于图像直方图分析的方法,适用于单峰或近似单峰直方图的情况。它使用直方图的形状特征来确定一个合适的阈值。该方法通常用于光照均匀、前景与背景灰度分布明显的图像。不适用于双峰或多峰直方图(例如 Otsu 方法更适用于双峰直方图)

4.1 三角二值化原理

  • 计算图像灰度直方图。
  • 选择直方图中的最大峰值点作为基准点。
  • 计算从直方图起始点到峰值点之间的最大距离来确定阈值。

4.2 三角二值化示例代码

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main() {// 读取灰度图像Mat gray = imread("lena.png", IMREAD_GRAYSCALE);if (gray.empty()) {cerr << "图像加载失败!" << endl;return -1;}Mat binary;// 使用 Triangle 方法自动计算阈值double triangle_thresh_val = threshold(gray, binary, 0, 255, THRESH_BINARY | THRESH_TRIANGLE);cout << "三角阈值计算结果:" << triangle_thresh_val << endl;imshow("原始灰度图像", gray);imshow("Triangle 二值化", binary);waitKey(0);return 0;
}

三角二值化

5. 自适应阈值二值化

在光照不均匀的场景下,全局阈值方法可能效果不佳,此时自适应阈值二值化更为有效。OpenCV 提供了 cv::adaptiveThreshold 函数,根据局部邻域信息动态确定阈值。

5.1 cv::adaptiveThreshold 函数

函数原型如下:

void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue,int adaptiveMethod, int thresholdType, int blockSize, double C);
  • src:输入灰度图像。
  • dst:输出二值图像。
  • maxValue:二值化后像素的最大值(通常为 255)。
  • adaptiveMethod:自适应方法,如 ADAPTIVE_THRESH_MEAN_C(邻域均值)或 ADAPTIVE_THRESH_GAUSSIAN_C(高斯加权)。
  • thresholdType:阈值类型(通常为 THRESH_BINARY)。
  • blockSize:用于计算局部阈值的邻域大小(必须为奇数)。
  • C:从计算出的平均值中减去的常数,起到微调作用。

5.2 自适应阈值示例代码

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;int main() {Mat gray = imread("E:/image/lena.png", IMREAD_GRAYSCALE);if (gray.empty()) {cerr << "图像加载失败!" << endl;return -1;}Mat adaptive_binary;// 使用自适应阈值,将邻域均值作为局部阈值,blockSize 为 11,C 为 2adaptiveThreshold(gray, adaptive_binary, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 11, 2);imshow("原始灰度图像", gray);imshow("自适应阈值二值化", adaptive_binary);waitKey(0);return 0;
}

自适应阈值方法通过考虑局部信息,使得在光照不均时也能得到较好的二值化结果,可以看到更多的细节
在这里插入图片描述

6. 应用场景与小结

图像二值化是图像预处理的重要步骤,全局阈值、Otsu 自动阈值和自适应阈值各有适用场景。

  • 全局阈值:简单、快速,适用于光照均匀的图像;
  • Otsu 方法:自动计算最佳阈值,适用于双峰直方图;
  • 自适应阈值:针对局部光照不均效果较好。

通过选择合适的方法和参数,可以有效分离图像中的前景与背景,为后续的图像处理和分析任务打下良好基础。

主要应用场景:

  • 文档处理:二值化能将文档转换为黑白图像,有助于 OCR 识别。
  • 目标分割:二值化用于将前景与背景分离,便于后续的物体检测和形态学处理。
  • 图像分析:二值化简化了图像信息,适合形状分析和轮廓提取。

文章转载自:

http://6MOihkeX.fkgcd.cn
http://tWC0XLGf.fkgcd.cn
http://wCumCn7w.fkgcd.cn
http://D9DZcdQv.fkgcd.cn
http://4nCsnv3F.fkgcd.cn
http://XZaUCffT.fkgcd.cn
http://y3IftKsS.fkgcd.cn
http://We3ajrcY.fkgcd.cn
http://TQs351ZN.fkgcd.cn
http://Ad5gwfNG.fkgcd.cn
http://1R1JAFHf.fkgcd.cn
http://03nwoi6y.fkgcd.cn
http://GsNNcuB4.fkgcd.cn
http://1jJUbQ1S.fkgcd.cn
http://rIUvKpWG.fkgcd.cn
http://9YU3PoKz.fkgcd.cn
http://XwZmb13L.fkgcd.cn
http://AzYOlIZC.fkgcd.cn
http://b91UbbyH.fkgcd.cn
http://sXYyOCzO.fkgcd.cn
http://lOR0u1Dj.fkgcd.cn
http://ephain9Z.fkgcd.cn
http://vZk8KJe1.fkgcd.cn
http://hFcSF7r8.fkgcd.cn
http://G0qDm1XV.fkgcd.cn
http://1wgrZ1xx.fkgcd.cn
http://Eo0cqshp.fkgcd.cn
http://w3QHcDtP.fkgcd.cn
http://tvpLKoFI.fkgcd.cn
http://dffjHy2A.fkgcd.cn
http://www.dtcms.com/wzjs/672564.html

相关文章:

  • 怎么添加网站程序wordpress 优势
  • 教育类网站配色宝塔建设的网站火车头发布失败
  • 怎么把网站链接做二维码电商修图技巧
  • 麻涌建设网站网络营销策划方案的目的
  • 行业前10的网站建设公司seo技术团队
  • ui设计参考网站有哪些保险网站建设方案
  • 如何添加网站后台国家建设工程网查询
  • 湛江模板建站软件厦门双瑞高磁网站是谁做的
  • 昆明云南微网站搭建连云港东海网站建设
  • 惠州有做网站的吗网页设计培训教育机构
  • php网站开发实战视频畜牧网站建设
  • 响应式网站做法wordpress上传服务器
  • 小程序免费制作平台有哪些济南seo整站外包
  • 陕西营销型网站建设室内设计行业现状及发展前景
  • 网站后台用什么做服务器有什么做美食的视频网站
  • 嘉定php网站开发培训网站多语言模块
  • 厦门网站开发培训什么平台可以免费推广产品
  • 网站的电子画册怎么做广州网页设计软件培训
  • 太原市手机网站建设深圳深圳网站建设公司
  • 找公司开发网站买电脑wordpress
  • 网站正能量下载免费软件设计软件手机版免费
  • 七牛做网站wordpress爱情主题
  • 网站开发公司需要那些硬件设备html5后台网站模板
  • 专业网站建设的中国风 wordpress主题
  • 建个网站 费用域名解析错误是网络问题还是电脑问题
  • 专业网站建设技术怎样去掉2345网址导航
  • 做网站学的什么专业网站红色模板
  • 哈尔滨做网站的oeminc网站访客抓取
  • 哈尔滨企业网站排名网页设计的代码大全
  • 二手房网站开发长沙做网站哪家公司好