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

网站优化的公司wordpress 机械 主题

网站优化的公司,wordpress 机械 主题,如何取消网站备案,截取wordpress内容文章目录 方案分析具体代码实现关键步骤说明注意事项 为了实现类似于MATLAB的edge(I, "sobel")函数的C代码,我们需要复现其完整的边缘检测流程,包括梯度计算、非极大值抑制和阈值处理。以下是具体的方案及代码实现: 方案分析 图像…

文章目录

      • 方案分析
      • 具体代码实现
      • 关键步骤说明
      • 注意事项

为了实现类似于MATLAB的edge(I, "sobel")函数的C++代码,我们需要复现其完整的边缘检测流程,包括梯度计算、非极大值抑制和阈值处理。以下是具体的方案及代码实现:

方案分析

  1. 图像预处理:将图像转为灰度图并进行高斯模糊以降低噪声。
  2. 梯度计算:使用Sobel算子计算水平和垂直方向的梯度。
  3. 梯度幅值与方向:计算梯度幅值并确定每个像素的梯度方向。
  4. 非极大值抑制:细化边缘,仅保留梯度方向上的局部最大值。
  5. 自动阈值处理:根据梯度幅值的统计特性自动选择阈值,生成二值边缘图像。

具体代码实现

#include <opencv2/opencv.hpp>
#include <cmath>using namespace cv;Mat sobelEdgeDetection(const Mat& input) {// 转换为灰度图Mat gray;if (input.channels() == 3)cvtColor(input, gray, COLOR_BGR2GRAY);elsegray = input.clone();// 高斯模糊降噪Mat blurred;GaussianBlur(gray, blurred, Size(3, 3), 0);// 计算Sobel梯度Mat dx, dy;Sobel(blurred, dx, CV_32F, 1, 0, 3); // 水平方向Sobel(blurred, dy, CV_32F, 0, 1, 3); // 垂直方向// 计算梯度幅值和角度(度数表示)Mat magnitude, angle;cartToPolar(dx, dy, magnitude, angle, true);// 非极大值抑制Mat nms = Mat::zeros(magnitude.size(), CV_32F);for (int i = 1; i < magnitude.rows - 1; ++i) {for (int j = 1; j < magnitude.cols - 1; ++j) {float curr = magnitude.at<float>(i, j);float dir = fmod(angle.at<float>(i, j) + 180, 180); // 转换为0~180度// 确定离散方向int sector;if ((dir < 22.5) || (dir >= 157.5))sector = 0; // 水平else if (dir >= 22.5 && dir < 67.5)sector = 1; // 45度else if (dir >= 67.5 && dir < 112.5)sector = 2; // 垂直elsesector = 3; // 135度// 比较相邻像素float a, b;switch (sector) {case 0:a = magnitude.at<float>(i, j + 1);b = magnitude.at<float>(i, j - 1);break;case 1:a = magnitude.at<float>(i - 1, j + 1);b = magnitude.at<float>(i + 1, j - 1);break;case 2:a = magnitude.at<float>(i + 1, j);b = magnitude.at<float>(i - 1, j);break;default: // 135度a = magnitude.at<float>(i - 1, j - 1);b = magnitude.at<float>(i + 1, j + 1);break;}if (curr >= a && curr >= b)nms.at<float>(i, j) = curr;}}// 自动计算阈值(取最大值的25%)double maxVal;minMaxLoc(nms, nullptr, &maxVal);double threshold = 0.25 * maxVal;// 应用阈值并转换为二值图像Mat edges;threshold(nms, edges, threshold, 255, THRESH_BINARY);edges.convertTo(edges, CV_8U);return edges;
}int main() {Mat img = imread("input.jpg");if (img.empty()) {std::cerr << "Error: Could not load image." << std::endl;return -1;}Mat edges = sobelEdgeDetection(img);imshow("Sobel Edges", edges);waitKey(0);return 0;
}

关键步骤说明

  1. 高斯模糊:使用3x3高斯核减少噪声影响。
  2. Sobel梯度计算:分别计算水平和垂直方向的梯度,数据类型为CV_32F以保留符号。
  3. 梯度幅值与方向:通过cartToPolar计算幅值(强度)和方向(角度)。
  4. 非极大值抑制:将梯度方向离散化为四个主方向,仅保留梯度方向上幅值最大的像素,细化边缘。
  5. 自动阈值处理:取非极大值抑制后幅值的最大值的25%作为阈值,生成二值边缘图像。

注意事项

  • 参数调整:高斯核大小、阈值比例等参数可根据实际图像调整。
  • 性能优化:处理大图像时,可考虑并行化或优化循环结构。
  • 结果对比:建议与MATLAB结果对比,调整参数以达到最佳匹配。

此代码实现了类似MATLAB的Sobel边缘检测流程,结合非极大值抑制和自动阈值处理,能够有效提取图像边缘。

http://www.dtcms.com/wzjs/805056.html

相关文章:

  • 大连网站建设平台怎么做一个购物平台网站
  • 万网网站备案教程网站开发与spark
  • 公司建设网站费用官方百度下载安装
  • 网站推广排名怎么做平潭县建设局网站
  • 有了网站 域名然后么做临沂企业建站系统
  • php建网站教程网站建设人员培训
  • 网站建设与推广方式石家庄大的网站开发公司
  • 电子商务网站建设与维护书上海网站建设 普送
  • 局域网网站建设多少钱怎么做关于花的网站
  • 网站导航是什么创意logo图片大全
  • 网站制作 常见问题中国十大房地产公司排名
  • 浙江省网站备案注销申请表外链吧官网
  • 网站怎么搬家网页设计赚钱吗
  • 织梦欧美网站模板做网站为什么要用php
  • 电子商务网站开发规划企业网站搜索引擎推广方法包括
  • 贵州手机网站建设大型网站开发团队的美工需要什么工作经验和教育背景及薪酬
  • 中国建设银行信用卡旅游卡服务网站品牌建设要求
  • .net网站开发软件什么是网络营销?网络营销的内容有哪些?你是怎么理解的?
  • 网站运营软件单页网站制作
  • 优化网站排名推荐公司百度海外视频网站建设
  • 网站建设从零开始 教程wordpress 关键词
  • 中国建设厅官方网站网站建设方法牜金手指下拉覀
  • 建设网站的编程过程可信网站认证有必要吗
  • 南京网站建设咨询小米手机的网站架构
  • 网站建设定价淮北住房和城乡建设局门户网站
  • 深圳住房和建设局网站官网自己创建一个网站需要多少钱
  • 网站该如何做兖州网站建设哪家好
  • 装修企业网站源码python网站开发效率
  • 东莞浩智建设网站哪家比较好营销型企业网站模板
  • 论文网站开发广州专业网站设计定制