记录mac上图像处理

自适应二值化

python 复制代码
import cv2

# 读取图像
image = cv2.imread('/Users/sinkarsenic/Downloads/用所选项目新建的文件夹/2.jpg', 0)  # 使用灰度模式读取图像

# 自适应二值化
adaptive_thresh = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 31, 2)

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Adaptive Thresholding', adaptive_thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

自适应二值化是处理光照不均匀或阴影存在的图像时常用的一种方法,自适应二值化考虑了图像不同区域的局部亮度和对比度,使得在光照不均匀或者阴影存在的情况下,也能得到较好的二值化效果。具有以下优点:

  1. 局部适应性:自适应二值化根据图像的局部区域计算阈值,因此能够更好地适应图像中局部光照变化。这意味着即使在图像的不同部分具有不同的光照条件或对比度时,也可以得到准确的二值化结果。

  2. 减少阴影影响:由于自适应二值化考虑了局部光照条件,因此可以减少阴影对二值化结果的影响。在存在阴影的情况下,全局阈值可能无法正确地将阴影部分和目标部分分离,而自适应二值化则可以更好地处理这种情况。

  3. 无需手动调整阈值:与全局阈值相比,自适应二值化无需手动设置全局阈值,而是根据图像的局部统计信息自动计算阈值。这样可以减少用户的主观干预,提高了处理图像的效率和鲁棒性。

  4. 适用性广泛:自适应二值化适用于各种光照条件下的图像处理任务,包括文档扫描、目标检测、图像分割等。它能够处理不同类型的图像,包括自然场景、工业图像等。

  5. 易于实现:Matlab提供了自适应二值化的实现方法,使得应用者可以方便地使用这一技术。只需几行代码就可以对图像进行自适应二值化处理,因此易于实现和集成到应用中。

综上所述,自适应二值化是一种简单且有效的处理光照不均匀或阴影存在的图像的方法,具有较高的实用性和适用性。除了自适应二值化之外,还有一些其他的图像处理技术可以达到类似的效果,尤其是在处理光照不均匀或者阴影存在的情况下。以下是一些常用的方法:

1.局部阈值化(Local Thresholding) :与自适应二值化类似,但是不使用局部统计信息来计算阈值,而是将图像分成多个局部区域,然后在每个局部区域内计算阈值。

受到噪声的影响。如果图像中存在噪声,局部阈值化可能会导致阈值计算的不准确性。

计算成本较高。在图像的每个局部区域内计算阈值可能会增加计算成本,特别是对于大型图像或需要实时处理的应用而言。

2.基于梯度的方法(Gradient-based Methods) :通过计算图像的梯度或边缘来确定阈值。例如,可以使用Sobel算子或Canny边缘检测来检测图像的边缘,然后应用阈值。

对参数敏感。一些梯度算子(如Sobel)具有参数(如核大小),对于不同的图像和应用,需要调整参数以获得最佳结果。

对噪声敏感。由于梯度算子对噪声比较敏感,因此需要在使用之前对图像进行平滑处理。

  1. 颜色空间转换(Color Space Transformation) :有时,将图像从RGB颜色空间转换到其他颜色空间(如HSV或LAB),然后应用阈值化,可以更好地处理光照变化。
    有时并不适用。某些场景下,颜色空间转换可能不适用于处理光照不均匀的图像,尤其是当光照变化不仅仅是亮度的变化时。
    对计算资源要求较高。颜色空间转换可能需要较多的计算资源,特别是对于高分辨率的图像而言。

4基于深度学习的方法(Deep Learning-based Methods) :使用深度学习模型(如卷积神经网络)来学习图像的特征并进行二值化。这种方法通常需要大量的标记数据进行训练,但在某些情况下可以提供更好的性能。

需要大量数据和计算资源。深度学习模型通常需要大量的标记数据进行训练,并且在实际应用中可能需要大量的计算资源和时间进行训练和推理。

需要调优。深度学习模型的性能通常受到超参数选择、网络结构设计等因素的影响,需要进行调优和优化才能达到最佳性能。

  1. 多阈值分割(Multi-threshold Segmentation) :将图像分成多个灰度级别的区域,并为每个区域选择适当的阈值。这种方法适用于图像中存在多个不同亮度或对比度区域的情况。
    需要手动设置阈值。多阈值分割方法通常需要手动设置阈值,这可能需要一定的领域知识和试验来选择合适的阈值。
    对参数敏感。选择不同的阈值可能会导致不同的分割结果,因此需要谨慎选择阈值。

这些方法中的每一种都有其适用的场景和局限性,具体选择取决于图像特点和需求。在实际应用中,通常需要尝试不同的方法并根据结果进行调整和优化。

霍夫变换

python 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('/Users/sinkarsenic/Downloads/用所选项目新建的文件夹/1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 应用霍夫变换检测直线
lines = cv2.HoughLines(gray, 1, np.pi/180, threshold=360)  # 调整threshold参数

# 构建霍夫空间图像
h, w = gray.shape[:2]
hough_space = np.zeros((h, w), dtype=np.uint8)
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho
    x1 = int(x0 + 1000 * (-b))
    y1 = int(y0 + 1000 * (a))
    x2 = int(x0 - 1000 * (-b))
    y2 = int(y0 - 1000 * (a))
    cv2.line(hough_space, (x1, y1), (x2, y2), (255), 2)

# 显示霍夫空间
plt.imshow(hough_space, cmap='gray')
plt.title('Hough Space')
plt.xlabel('Theta (radians)')
plt.ylabel('Rho (pixels)')
plt.show()
相关推荐
小陈phd1 天前
多模态大模型学习笔记(四十六)——图像-文本生成(Image-Text Generation):跨模态创作与语义互通
笔记·学习·计算机视觉
春波petal1 天前
Mac nvm 永久固定 Node 版本(新开终端自动生效)
macos·nvm
硅谷秋水1 天前
Qwen-VLA:跨任务、环境与机器人形态的视觉-语言-动作统一建模
人工智能·深度学习·算法·计算机视觉·语言模型·机器人
YOLO数据集集合1 天前
智慧电网红外热成像数据集|电力设备组件识别目标检测深度学习数据集
人工智能·深度学习·yolo·目标检测·计算机视觉
Kobaayyy1 天前
CVPR2026|底层视觉(超分辨率,图像恢复,去雨,去雾,去模糊,去噪等)相关论文汇总(附论文链接/开源代码)【持续更新】
计算机视觉·图像算法·图像增强·图像复原·超分辨率·底层视觉·cvpr2026
小宋10211 天前
Mina Meeting Assistant 新手极速上手指南
ide·macos·ai·xcode·mina
weixin_468466851 天前
空洞卷积与膨胀卷积新手入门指南
图像处理·人工智能·深度学习·ai·机器视觉·卷积·空洞卷积
AI创界者1 天前
ComfyUI v8 极致整合包发布!Win/Mac 双平台完美适配 + 多卡并行加速,开启 AI 绘画新时代
人工智能·macos
埃菲尔铁塔_CV算法1 天前
基于扩张卷积与双分支参数调控的低光照图像增强算法完整研究与工程解析
人工智能·神经网络·算法·机器学习·计算机视觉
最后一支迷迭香1 天前
Mac使用docker下的两个冷知识
macos·docker·容器