网站论坛模板wordpress精简主题

张小明 2026/1/3 16:15:51
网站论坛模板,wordpress精简主题,基于企业网站的网络营销方法,多个网站能否统一做等保文章目录 0 简介1 Kmeans聚类算法基本原理2 基于Kmeans图像分割算法流程4 代码运行结果及评价5 最后 0 简介 今天学长向大家分享一个毕业设计项目 毕业设计 基于Kmeans的图像分割算法软件设计 项目运行效果#xff1a; 毕业设计 基于kmean的图像分割#x1f9ff; 项目分享…文章目录0 简介1 Kmeans聚类算法基本原理2 基于Kmeans图像分割算法流程4 代码运行结果及评价5 最后0 简介今天学长向大家分享一个毕业设计项目毕业设计 基于Kmeans的图像分割算法软件设计项目运行效果毕业设计 基于kmean的图像分割 项目分享:见文末!1 Kmeans聚类算法基本原理K-Means算法的思想很简单对于给定的样本集按照样本之间的距离大小将样本集划分为K个簇。让簇内的点尽量紧密的连在一起而让簇间的距离尽量的大。以彩色图像为例基于彩色图像的RGB三通道为xyz轴建立空间直角坐标系那么一副图像上的每个像素点与该空间直角坐标系建立了一 一映射双射的关系。从空间直角坐标系中随机取 k 个点作为 k个簇的各自的中心。计算所有像素点到k个簇心的距离并将所有像素点划分至与其距离最小的簇类。自此聚类完成。其中距离定义为欧氏距离其中rgb分别表示红绿蓝三通道r1g1b1为彩色图片中某像素点r0g0b0表示某簇类的簇心。2 基于Kmeans图像分割算法流程Note彩色图像的操作是基于一个三维空间1、加载图像获取图像的所有像素点并将其转换为样本数据。2、开始迭代a)、初始化簇心坐标。a)、更新簇心坐标遍历样本数据中的数据点并计算数据点与所有簇心的距离。对于某数据点计算得到的与所有簇类的欧氏距离中取欧氏距离最小所对应的簇类作为该数据点对应的类。c)、计算更新后的簇心坐标与更新前的簇心坐标的均方误差。若均方误差仍大于某阈值则重复b)反之结束迭代。Kmeans的详细算法流程参考博文https://www.cnblogs.com/pinard/p/6164214.html三、代码主函数部分1、加载图片​Mat src, dst; src imread(J20.jpg); namedWindow(输入图像, WINDOW_AUTOSIZE); imshow(输入图像, src);2、初始化颜色图像分割后需要上色​Scalar colorTab[] { Scalar(0,0,255), Scalar(0,255,0), Scalar(255,0,0), Scalar(0,255,255), Scalar(255,0,255), };3、初始化簇类数并将所有的像素点全部转换为样本数据​int sampleCount width*height; int clusterCount 5; Mat points(sampleCount, dims, CV_32F, Scalar(10)); //将彩色图像的像素点转换为样本数据 int index 0; for (int row 0; row height; row) { for (int col 0; col width; col) { index row*width col; Vec3b bgr src.atVec3b(row, col); points.atfloat(index, 0) static_castint(bgr[0]);//b points.atfloat(index, 1) static_castint(bgr[1]);//g points.atfloat(index, 2) static_castint(bgr[2]);//r } }4、利用Kmeans算法对样本数据分类​centers, feature Kmeans(points, clusterCount, sampleCount);5、显示图像分割后的结果​//显示图像分割结果 Mat result Mat::zeros(src.size(), src.type()); int index1 0; for (int row 0; row height; row) { for (int col 0; col width; col) { index1 row*width col; int label feature.atfloat(index1, 3); result.atVec3b(row, col)[0] colorTab[label][0]; result.atVec3b(row, col)[1] colorTab[label][1]; result.atVec3b(row, col)[2] colorTab[label][2]; } } imshow(基于Kmeans聚类的图像分割, result);四、代码子函数部分1、初始化聚类中心​//初始化簇心 Mat centers Mat::zeros(clusterCount, 1, CV_32FC3);//4行3列 centers.atfloat(0, 0) 150; centers.atfloat(0, 1) 180; centers.atfloat(0, 2) 200; centers.atfloat(1, 0) 20; centers.atfloat(1, 1) 25; centers.atfloat(1, 2) 37; centers.atfloat(2, 0) 80; centers.atfloat(2, 1) 100; centers.atfloat(2, 2) 140; centers.atfloat(3, 0) 226; centers.atfloat(3, 1) 234; centers.atfloat(3, 2) 235;2、利用Kmeans算法进行迭代​Mat feature Mat::zeros(sampleCount, 1, CV_32FC4); float *distance new float[sampleCount]; int epoch 0; while (true) { for (int row 0; row points.rows; row) { for (int i 0; i centers.rows; i) { distance[i] pow((points.atfloat(row, 0) - centers.atfloat(i, 0)), 2) pow((points.atfloat(row, 1) - centers.atfloat(i, 1)), 2) pow((points.atfloat(row, 2) - centers.atfloat(i, 2)), 2); } float min distance[0]; int flag 0; for (int i 0; i clusterCount; i) { if (min distance[i]) { min distance[i]; flag i; } } feature.atfloat(row, 0) points.atfloat(row, 0); feature.atfloat(row, 1) points.atfloat(row, 1); feature.atfloat(row, 2) points.atfloat(row, 2); feature.atfloat(row, 3) flag; } float new_center_r 0, new_center_g 0, new_center_b 0; float *temp new float[clusterCount]; for (int i 0; i clusterCount; i) { int num 0; float sum_center_r 0, sum_center_g 0, sum_center_b 0; for (int row 0; row sampleCount; row) { if (feature.atfloat(row, 3) i) { sum_center_b sum_center_b feature.atfloat(row, 0); sum_center_g sum_center_g feature.atfloat(row, 1); sum_center_r sum_center_r feature.atfloat(row, 2); num; } } new_center_b sum_center_b / num; new_center_g sum_center_g / num; new_center_r sum_center_r / num; temp[i] pow((new_center_b - centers.atfloat(i, 0)), 2) pow((new_center_g - centers.atfloat(i, 1)), 2) pow((new_center_r - centers.atfloat(i, 2)), 2); centers.atfloat(i, 0) new_center_b; centers.atfloat(i, 1) new_center_g; centers.atfloat(i, 2) new_center_r; } float total 0; float mean_square_error 0; for (int i 0; i clusterCount; i) { total total temp[i]; } mean_square_error total / 4; if (epoch % 1 0) cout epoch epoch \terror of mean square mean_square_error endl; if (mean_square_error 0.01) break; epoch; }4 代码运行结果及评价输入图片2、迭代过程3、聚类结果如上图从左至右分别为Blue、Green、Red通道从上之下分别是五个簇心的坐标像素值。4、图像分割结果如上图图像被清晰的分为了五个部分背景为蓝色、歼20的迷彩涂装分为了红黄两色颜色最暗的地方为紫色颜色次暗的地方为绿色。另外对于大数据经典的Kmeans算法显然处理速度太慢但对于彩色图像使用经典Kmeans算法对其进行分割其所耗时长在可接受的范围内。至此完全实现了基于Kmeans聚类算法的图像分割经验证其结果与利用OpenCV提供的API得到的效果完全一致5 最后项目运行效果 项目分享:见文末!
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设加后台买网站服务器

一、Helm概述 helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理。 Helm本质就是让k8s的应用管理(Deployment、Service等)可配置,能动态生成。通过动态生成K8S资源清单文&am…

张小明 2026/1/2 7:06:53 网站建设

手表网站布局做网站需要的设备

智能家电的发展趋势早已明确:体积更小、功能更集成、成本更可控。但传统开关电源的供电方案,却与此趋势背道而驰。为了实现220V交流电到低压直流电的转换,工程师不得不搭配大容量高压电容滤除纹波,依靠功率电感稳定电流&#xff0…

张小明 2026/1/1 17:40:51 网站建设

中国网站排名wordpress内容索引插件

一、背景意义 随着计算机视觉技术的迅猛发展,物体检测与识别的应用场景日益广泛,涵盖了安防监控、自动驾驶、智能家居等多个领域。在这些应用中,扑克牌的点数识别作为一种特定的视觉识别任务,具有重要的实用价值。扑克牌不仅是休闲…

张小明 2025/12/30 18:18:54 网站建设

制作网站 优帮云so导航 抖音

导读:在云原生技术飞速发展的今天,企业的集群规模正不断扩大,从单集群部署逐渐转向多集群、分布式架构。随之而来的是集群管理复杂度的激增——如何统一调度多集群资源、保障跨集群应用的一致性部署、简化运维操作并降低管理成本,…

张小明 2025/12/30 20:42:02 网站建设

网站建设初步规划开发新客户的十大渠道

某取水泵站内设取水泵房(取水泵、电动蝶阀、潜污泵、排风风机等)、高低压变配电间、原水水质监测仪表间等设施,自控系统需实现对泵站设备工况的全面监视与自动化控制,主要实现为各个水厂的输水任务。通过部署数据采集网关&#xf…

张小明 2025/12/30 19:53:09 网站建设

网站建设的建议wordpress友联添加

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个事务调试效率对比工具:1. 传统方式:需要手动添加日志、断点调试的完整流程 2. AI辅助方式:自动分析事务边界和异常传播。要求&#xff1…

张小明 2025/12/30 21:43:06 网站建设