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

【图像检测】基于LSD算法直线检测matlab代码

1 简介

提出了一种中国象棋棋盘角点检测的算法.首先采用LSD算法检测出棋盘灰度图像中的大部分直线,然后通过使用基于灰度值区域的投影直方图和基于LSD算法的直线交点检测两种方法,精确地检测出象棋棋盘的角点.最后通过实验,验证了算法的有效性和实时性,对于棋盘的亮度变化、棋盘畸变和边缘模糊具有良好的适应性.

​通过观察 LSD 算法的结果可以发现,棋盘角点大部分都是位于棋盘边线的交点或者交点附近,所 以,可以通过检测出的直线求得这些直线的交点,从而确定象棋棋盘角点的位置.首先,在 LSD 算法检测出的棋盘上的直线后,从直线方向的分布上知道棋盘中信息点( 图 1( a) 中标出的两个点称之为信息点) 处于一些斜线的交点处,而且棋盘上其他角点处于方向位于 90 度,180 度左右直线的交点上,因此,可以通过对 LSD 算法检测出的直线进行分组,先求出这些斜线的交点即信息点的准确位置,然后,通过这两个点的位置可以大致确定棋盘其他角点的近似位置,由于这些直线的信息都是已知的,那么可以找到这些近似位置附近直线的交点,另外,由信息点得到的近似位置是比较接近真实棋盘角点的位置,所以,找到距离近似位置最近的交点的位置即为棋盘角点的位置.

2 部分代码

%{ Finds the angles and the gradients of the image. Generates a list of pseudo ordered points. * * @param scaled_image the image after guassian blur and resize * @param threshold The minimum value of the angle that is considered defined, otherwise NOTDEF * @param n_bins The number of bins with which gradients are ordered by, using bucket sort. * @param list Return: Vector of coordinate points that are pseudo ordered by magnitude. * Pixels would be ordered by norm value, up to a precision given by max_grad/n_bins. %} %list = [y, x, gradient] ordered by gradient %angles & modgrad: img_height * img_width matrix function [angles, modgrad, list] = ll_angle(scaled_image, threshold, n_bins) [height, width, dim] = size(scaled_image); % [modgrad,angles] = imgradient(scaled_image); % max_grad = max(max(modgrad)); % define arrays for store angles and gradient angles = zeros(height, width); modgrad = zeros(height, width); %Undefined the down and right boundaries angles(height, :) = -1024.0; angles(:, width) = -1024.0; max_grad = -1; %Computing gradient for remaining piexls for y = 1 : height-1 for addr = 1 : width-1 % DA = (scaled_image(y+1, addr+1) - scaled_image(y, addr)); % BC = (scaled_image(y+1, addr) - scaled_image(y, addr+1)); DA = (scaled_image(y+1, addr+1) - scaled_image(y, addr)); BC = (scaled_image(y+1, addr) - scaled_image(y, addr+1)); gx = DA + BC; % gx = double(gx); gy = DA - BC; % gy = double(gy); norm = sqrt((gx^2 + gy^2)/4); modgrad(y, addr) = norm; %set angles to nodefine for small gradient if norm <= threshold angles(y, addr) = -1024.0; else angles(y, addr) = atan2(gx,-gy); if norm > max_grad max_grad = norm; end end end end %computing histogram of gradient values count = 1; if max_grad > 0 bin_coef = (n_bins - 1) / max_grad; else bin_coef = 0; end unsorted_list = zeros(height*width,3); for y = 1 : height for x = 1 : width if x < width && y < height i = modgrad(y, x) * bin_coef; else i = -1024; end unsorted_list(count, 1) = y; unsorted_list(count, 2) = x; unsorted_list(count, 3) = i; count= count+1; end end % list = unsorted_list; % sort [a, index] = sort(unsorted_list(:,3),'descend'); list = unsorted_list(index, [1,2 ,3]); % % figure, imshow(angles); % figure, imshow(modgrad); %

3 仿真结果

4 参考文献

[1]段汕, 贺兴, 娄联堂, 徐文, & 罗敬. (2013). 一种基于灰度投影的中国象棋棋盘角点检测算法. 中南民族大学学报:自然科学版, 32(4), 5.

**部分理论引用网络文献,若有侵权联系博主删除。**

http://www.jsqmd.com/news/1290985/

相关文章:

  • 如何调整照片尺寸大小和像素:海报固定尺寸场景问答 - AI测评专家
  • 反激式开关电源原理与手机充电器设计解析
  • 虚拟同步发电机VSG控制技术解析与Simulink建模实践
  • 边牧驱虫药哪家安全可靠?一文讲透:2026年边牧专用安全驱虫药选购指南与主流品牌排行(避坑全攻略) - 互联网科技品牌测评
  • 2026精选天津东丽区宴会厅怎么联系?专业选择指南与津海阁家宴深度解析 - 装修教育财税推荐2026
  • Python数据可视化基石:matplotlib安装全攻略与疑难解决
  • Minecraft服务器可视化插件部署指南:从经济系统到状态监控
  • AI 数据产品的护城河:数据飞轮比模型精度更值钱
  • Python爬虫实战:User-Agent大全与反爬策略解析
  • 2026 年至今,丰润热门的活动推拉棚制造企业选型指南,办活动还在搭死棚?试试这玩意儿竟能随用随收还能避风雨! - 领域鉴赏官
  • Windows放大镜快捷键指南(Magnifier)开启:Win + 加号键、关闭:Win + Esc、切换:Ctrl + Alt + M
  • Python连接达梦数据库实战指南:从驱动安装到框架集成
  • 舞蹈视频音视频同步与特效处理技术实战指南
  • 如何用G-Helper替代Armoury Crate?华硕笔记本轻量级控制中心完整指南
  • ChatGPT(codex) 第三方LLM配置
  • 特斯拉Terafab芯片工厂与自动驾驶系统软硬件协同优化实践
  • RuoYi-Vue-Plus集成MinIO:Windows本地部署与对象存储实战
  • Xbox手柄终极性能测试指南:3步掌握你的游戏延迟真相
  • 高性能虚拟显示器解决方案:ParsecVDisplay技术深度解析与实战指南
  • FreeMove终极指南:智能文件夹迁移工具,彻底解决C盘空间不足难题
  • CoastSat海岸线潮汐校正终极指南:全球卫星海岸监测的精准解决方案
  • 2026 年现阶段历城热门的静音发电机租赁公司哪家好,别再吵闹!秘密租用它,电力瞬间静音 - 行业甄选官
  • 2026免费空间大的网盘软件有哪些推荐,主流网盘拆解
  • UniApp跨端适配实战:从响应式设计到多端页面智能布局
  • 大模型应用开发实战指南:从Transformer到RAG系统落地
  • 用Godot游戏引擎构建三维地球:GIS数据可视化与动态渲染实战
  • 彻底告别DLL错误!5步快速修复Windows软件兼容性问题终极指南
  • 我明白为什么Pro+最后没有给了
  • 开源机械手控制系统OpenManus开发指南
  • 随身WIFI刷入Debian系统:打造微型服务器与开发环境实战指南