计算机视觉入门教程之将图像阈值处理

图像阈值化是图像处理管道的重要中间步骤。阈值处理可以帮助我们去除较亮或较暗的图像区域和轮廓。阈值设置所有像素值小于225到255(白色;和所有像素值>= 225到255(黑色;背景),从而分割图像

thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey(0)

代码示意:图像灰度化以后小于225的像素设置为黑色,大于的设置为白色。左为边缘计算以后,右边为原图,下边为阈值处理以后。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,最频值法是一种基于直方图的阈值分割方法,其基本思想是将图像的像素值分为两部分,使得两部分的像素点的平均灰度值之差最大。具体实现过程如下: 1. 统计图像的灰度直方图,即计算每个灰度级别的像素点数目。 2. 找到直方图中出现次数最多的灰度级别,将其作为初始阈值。 3. 将图像分为两部分,一部分是小于等于初始阈值的像素点,另一部分是大于初始阈值的像素点。 4. 分别计算两部分像素点的平均灰度值,将两部分平均灰度值的差作为新的阈值。 5. 重复步骤3和步骤4,直到新的阈值与上一次的阈值相等或者差值小于一个预设的阈值。 下面是一个Python实现最频值法阈值分割的代码示例: ```python import cv2 import numpy as np def threshold_by_mode(image): # 计算灰度直方图 hist, bins = np.histogram(image.ravel(), 256, [0, 256]) # 找到直方图中出现次数最多的灰度级别 mode = np.argmax(hist) # 初始化阈值 threshold = mode # 迭代计算阈值 while True: # 将图像分为两部分 fg = image > threshold bg = image <= threshold # 计算两部分像素点的平均灰度值 mean_fg = np.mean(image[fg]) mean_bg = np.mean(image[bg]) # 计算新的阈值 new_threshold = int((mean_fg + mean_bg) / 2) # 判断是否收敛 if abs(new_threshold - threshold) < 1: break threshold = new_threshold # 返回二值化图像 return (image > threshold).astype(np.uint8) * 255 # 读取图像 image = cv2.imread('lena.png', cv2.IMREAD_GRAYSCALE) # 阈值分割 result = threshold_by_mode(image) # 显示结果 cv2.imshow('result', result) cv2.waitKey(0) cv2.destroyAllWindows() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值