阈值化

本文详细介绍使用OpenCV进行图像阈值处理的方法,包括固定阈值化Threshold()函数及自适应阈值操作adaptiveThreshold()函数的使用。通过C++代码示例展示了如何调整阈值类型和参数值,实现图像的二值化处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、固定阈值化Threshold()函数

double threshold( InputArray src, OutputArray dst,
                  double thresh, double maxval, int type );

二、自适应阈值操作:adaptiveThreshold()函数

void adaptiveThreshold( InputArray src, OutputArray dst,
                                     double maxValue, int adaptiveMethod,
                                     int thresholdType, int blockSize, double C );

 

 1 #include<opencv2/opencv.hpp>
 2 #include<iostream>
 3 
 4 using namespace cv;
 5 using namespace std;
 6 
 7 #define WINDOW_NAME "【程序窗口】"
 8 
 9 int g_nThresholdValue = 100;
10 int g_nThresholdType = 3;
11 Mat g_srcImage, g_grayImage, g_dstImage;
12 
13 void on_Threshold(int, void *);
14 
15 int main(int argc, char** argv) {
16     g_srcImage = imread("C:\\Users\\Nelsoner\\Desktop\\Camera Roll\\05.jpg");
17 
18     //存留一份源图的灰度图
19     cvtColor(g_srcImage, g_grayImage, COLOR_RGB2GRAY);
20         
21     namedWindow(WINDOW_NAME);
22     imshow(WINDOW_NAME, g_srcImage);
23 
24     createTrackbar("模式", WINDOW_NAME, &g_nThresholdType, 4, on_Threshold);
25     createTrackbar("参数值", WINDOW_NAME, &g_nThresholdValue, 255, on_Threshold);
26     on_Threshold(0, 0);
27 
28     waitKey(0);
29     return 0;
30 }
31 
32 void on_Threshold(int, void *) {
33     threshold(g_grayImage, g_dstImage, g_nThresholdValue, 255, g_nThresholdType);
34     imshow(WINDOW_NAME, g_dstImage);
35 }

 

转载于:https://www.cnblogs.com/Nelsoner/p/6789728.html

### 截断阈值化算法实现及应用场景 截断阈值化是一种图像处理技术,用于将像素值限制在某个范围内。具体来说,如果像素值超过设定的阈值,则将其设置为该阈值;否则保持原值不变。这种方法可以有效减少极端值对图像的影响,同时保留原始图像的大部分信息[^1]。 #### 实现方法 在 OpenCV 中,可以通过 `cv2.threshold` 函数实现截断阈值化。该函数支持多种阈值化类型,其中 `cv2.THRESH_TRUNC` 专门用于实现截断阈值化。以下是其实现代码示例: ```python import cv2 import numpy as np import matplotlib.pyplot as plt # 加载灰度图像 image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE) # 定义阈值 threshold_value = 127 # 应用截断阈值化 ret, trunc_threshold = cv2.threshold(image, threshold_value, 255, cv2.THRESH_TRUNC) # 显示结果 plt.figure(figsize=(10, 5)) plt.subplot(1, 2, 1), plt.imshow(image, cmap='gray'), plt.title('Original Image') plt.subplot(1, 2, 2), plt.imshow(trunc_threshold, cmap='gray'), plt.title('Truncated Threshold') plt.show() ``` 上述代码中,`cv2.threshold` 的第四个参数指定阈值化类型为 `cv2.THRESH_TRUNC`,表示当像素值大于阈值时,将其设置为阈值;否则保持不变[^2]。 #### 应用场景 截断阈值化的典型应用场景包括: 1. **图像去噪**:通过限制像素值范围,去除图像中的噪声点,同时保留大部分原始信息。 2. **医学影像处理**:在医学影像中,某些像素值可能超出正常范围(例如由于设备误差或光照不均)。截断阈值化可以帮助限制这些异常值,从而提高后续分析的准确性。 3. **文档扫描优化**:在文档扫描过程中,可能会出现过亮或过暗的区域。截断阈值化可以用来调整这些区域的像素值,使文本更清晰可读。 #### 注意事项 尽管截断阈值化可以有效减少极端值的影响,但它也可能导致某些细节信息的丢失。因此,在实际应用中,需要根据具体需求选择合适的阈值[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值