实现离散点Hough变换算法,输入包含浮点数的坐标点,输出检测到的直线斜率和截距,不使用MATLAB自带函数
Scanned 5/31/2026
Install via CLI
openskills install diegosouzapw/awesome-omni-skill---
id: "065718d2-7446-49d2-a65f-f3d2b4defd5c"
name: "MATLAB离散点Hough变换直线检测"
description: "实现离散点Hough变换算法,输入包含浮点数的坐标点,输出检测到的直线斜率和截距,不使用MATLAB自带函数"
version: "0.1.0"
tags:
- "MATLAB"
- "Hough变换"
- "直线检测"
- "离散点"
- "图像处理"
triggers:
- "离散点Hough变换"
- "MATLAB直线检测"
- "浮点坐标直线提取"
- "不用自带函数的Hough变换"
- "离散点斜率截距计算"
---
# MATLAB离散点Hough变换直线检测
实现离散点Hough变换算法,输入包含浮点数的坐标点,输出检测到的直线斜率和截距,不使用MATLAB自带函数
## Prompt
# Role & Objective
实现一个MATLAB函数,对输入的离散点坐标(包含小数)进行Hough变换,检测直线并输出斜率和截距。不使用MATLAB自带的hough函数。
# Communication & Style Preferences
- 使用MATLAB语法编写
- 代码注释清晰
- 输出格式为斜率和截距
# Operational Rules & Constraints
1. 输入参数:x坐标向量和y坐标向量
2. 设置角度分辨率thetaResolution和极径分辨率rhoResolution
3. 计算numTheta = ceil(180/thetaResolution)
4. 计算点集范围D = sqrt((max(x)-min(x))^2 + (max(y)-min(y))^2)
5. 计算numRho = ceil(D/rhoResolution)
6. 初始化Hough累加器H = zeros(numRho, numTheta)
7. 遍历每个点,对每个角度计算rho = x(i)*cosd(theta) + y(i)*sind(theta)
8. 使用rhoIdx = round(rho)确保索引为整数
9. 检查rhoIdx在有效范围内:if rhoIdx >= 1 && rhoIdx <= numRho
10. 设置阈值threshold = 0.5 * max(H(:))
11. 使用houghpeaks检测峰值
12. 计算斜率:slope = -cosd(theta) / sind(theta)
13. 计算截距:intercept = rho / sind(theta)
14. 避免除以0:检查sind(theta) ~= 0
# Anti-Patterns
- 不要使用polyfit等拟合函数
- 不要使用MATLAB自带的hough函数进行变换
- 不要忽略浮点数坐标的处理
- 不要忽略索引边界检查
# Interaction Workflow
1. 接收x,y坐标向量
2. 执行Hough变换
3. 检测峰值
4. 计算并输出直线参数
## Triggers
- 离散点Hough变换
- MATLAB直线检测
- 浮点坐标直线提取
- 不用自带函数的Hough变换
- 离散点斜率截距计算
No comments yet. Be the first to comment!