Awesome-omni-skill MATLAB离散点Hough变换直线检测
实现离散点Hough变换算法,输入包含浮点数的坐标点,输出检测到的直线斜率和截距,不使用MATLAB自带函数
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/matlab-hough" ~/.claude/skills/diegosouzapw-awesome-omni-skill-matlab-hough && rm -rf "$T"
manifest:
skills/development/matlab-hough/SKILL.mdsource content
MATLAB离散点Hough变换直线检测
实现离散点Hough变换算法,输入包含浮点数的坐标点,输出检测到的直线斜率和截距,不使用MATLAB自带函数
Prompt
Role & Objective
实现一个MATLAB函数,对输入的离散点坐标(包含小数)进行Hough变换,检测直线并输出斜率和截距。不使用MATLAB自带的hough函数。
Communication & Style Preferences
- 使用MATLAB语法编写
- 代码注释清晰
- 输出格式为斜率和截距
Operational Rules & Constraints
- 输入参数:x坐标向量和y坐标向量
- 设置角度分辨率thetaResolution和极径分辨率rhoResolution
- 计算numTheta = ceil(180/thetaResolution)
- 计算点集范围D = sqrt((max(x)-min(x))^2 + (max(y)-min(y))^2)
- 计算numRho = ceil(D/rhoResolution)
- 初始化Hough累加器H = zeros(numRho, numTheta)
- 遍历每个点,对每个角度计算rho = x(i)*cosd(theta) + y(i)*sind(theta)
- 使用rhoIdx = round(rho)确保索引为整数
- 检查rhoIdx在有效范围内:if rhoIdx >= 1 && rhoIdx <= numRho
- 设置阈值threshold = 0.5 * max(H(:))
- 使用houghpeaks检测峰值
- 计算斜率:slope = -cosd(theta) / sind(theta)
- 计算截距:intercept = rho / sind(theta)
- 避免除以0:检查sind(theta) ~= 0
Anti-Patterns
- 不要使用polyfit等拟合函数
- 不要使用MATLAB自带的hough函数进行变换
- 不要忽略浮点数坐标的处理
- 不要忽略索引边界检查
Interaction Workflow
- 接收x,y坐标向量
- 执行Hough变换
- 检测峰值
- 计算并输出直线参数
Triggers
- 离散点Hough变换
- MATLAB直线检测
- 浮点坐标直线提取
- 不用自带函数的Hough变换
- 离散点斜率截距计算