You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Harris角点检测器实现太空图像去噪(剔除恒星)?

Harris角点检测器用于太空图像恒星剔除的方案说明

你提到的方案是可行的。恒星在深空图像中多表现为高对比度的小尺寸亮斑,边缘灰度梯度变化剧烈,刚好符合Harris角点的检测特征,你可以基于检测到的角点坐标,合并替换周边像素实现恒星剔除的去噪效果。

现有代码问题修正

  • 首先要修复变量名不统一的问题:你的代码中混用Home和casa两个变量名,图像读取后存放在Home变量中,后续调用casa.copy()会触发未定义变量报错,需要先统一命名规则。
  • 目前代码仅实现了角点标记功能,没有做后续的邻域像素合并处理:需要先提取角点掩码,再对掩码覆盖的区域做像素替换,才能实现去噪效果。
  • 检测参数可以按需调整:可以根据图像中恒星的大小调整blockSize参数,根据误检率调整阈值系数和k值,优化检测准确率。

可直接运行的改进代码

import cv2
import numpy as np 

# 读取原始图像并备份
img = cv2.imread("casa.jpg")
img_original = img.copy()
# 转换为灰度图用于角点检测
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Harris角点检测逻辑
gray_float = np.float32(img_gray)
dst = cv2.cornerHarris(gray_float, blockSize=4, ksize=3, k=0.14)
# 膨胀检测结果,扩大覆盖范围匹配恒星的实际尺寸
dst = cv2.dilate(dst, None)
# 生成角点区域掩码
corner_mask = dst > 0.01 * dst.max()

# 实现邻域像素合并去噪:这里采用中值滤波生成背景,替换角点区域像素
kernel_size = 5
bg_img = cv2.medianBlur(img_original, kernel_size)
img[corner_mask] = bg_img[corner_mask]

# 结果展示
cv2.imshow("原始图像", img_original)
cv2.imshow("恒星剔除后图像", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

检测效果参考

检测结果示意图

内容的提问来源于stack exchange,提问作者Joaquín Octavio Berlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 22:54:03