# MATLAB离散点Hough变换直线检测

> 实现离散点Hough变换算法，输入包含浮点数的坐标点，输出检测到的直线斜率和截距，不使用MATLAB自带函数

- Skill: `diegosouzapw/matlab-hough` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/matlab-hough`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/matlab-hough/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/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变换
- 离散点斜率截距计算

