松原网站建设,运城做网站,村级网站建设 不断增强,wordpress插件打不开文章目录摘要Abstract一、图像预处理1. 图像滤波1.1 高斯模糊#xff1a;1.2 中值模糊#xff1a;1.3 拉普拉斯滤波器#xff1a;1.4 双边滤波器#xff1a;2. 使用分割技术检测和移除背景3. 数据集增强4. 像素值调整二、案例#xff1a;图片文字提取器1. 原始版本1.1 代码…文章目录摘要Abstract一、图像预处理1. 图像滤波1.1 高斯模糊1.2 中值模糊1.3 拉普拉斯滤波器1.4 双边滤波器2. 使用分割技术检测和移除背景3. 数据集增强4. 像素值调整二、案例图片文字提取器1. 原始版本1.1 代码解读2. 进一步探究总结摘要本周围绕图像预处理与 OCR 文字提取展开系统学习了图像滤波高斯、中值、拉普拉斯、双边滤波、背景分割阈值化、边缘检测等、数据集增强翻转 / 旋转、裁剪等、像素值调整二值化、灰度化、归一化四类核心图像预处理技术的原理与应用场景。同时以 EasyOCR 为工具搭建图片文字提取器展示了从图像读取、灰度化 / 高斯滤波降噪到文本识别的完整流程还进一步探究了裁剪、旋转等图像调整对识别精度的影响并实现了为识别文本添加检测边框的可视化功能。AbstractThis week, my learning focused on image preprocessing and OCR text extraction. I systematically studied the principles and application scenarios of four core image preprocessing techniques:image filtering (Gaussian filtering, median filtering, Laplacian filtering, bilateral filtering);background segmentation (thresholding, edge detection, etc.);dataset augmentation (flipping/rotation, cropping, etc.);pixel value adjustment (binarization, grayscale conversion, normalization).Meanwhile, I built an image text extractor using EasyOCR as the tool, demonstrating the complete process from image reading, grayscale conversion/Gaussian filtering for denoising, to text recognition. Furthermore, I explored the impact of image adjustments (such as cropping and rotation) on recognition accuracy, and implemented a visualization function to add detection bounding boxes to the recognized text.一、图像预处理参考文章列表1【原文链接https://blog.csdn.net/matt45m/article/details/137092314】2【原文链接https://blog.csdn.net/2302_80961196/article/details/153827359】1. 图像滤波图像滤波的作用是平滑图像、去除噪声、增强图像等。滤波操作可以通过应用各种类型的滤波器来实现其中包括线性滤波器如均值滤波、高斯滤波和非线性滤波器如中值滤波等。1.1 高斯模糊高斯模糊过滤器减少图像中的细节和噪声。它通过对每个像素及其周围像素应用高斯函数来“模糊”图像。这可以帮助平滑边缘和细节为边缘检测或其他处理技术做准备。实验证明高斯核越大模糊的范围越大。因此核大小合适时会有磨皮效果过大则会非常模糊过小则边界明显。效果如下:1.2 中值模糊中值模糊过滤器适用于从图像中去除盐和胡椒噪声。它的工作原理是用邻近像素的中值替换每个像素。这可以帮助平滑孤立的噪声像素同时保留边缘。高斯滤波和中值滤波的区别高斯滤波处理细小均匀的噪点。将噪点与原图中像素点进行处理取加权平均值最后使得噪点融入图片虽然原图细节没有了但是噪点并不突兀了像加了磨皮滤镜。中值滤波处理图片中很显眼的“污点” 用“中位数”取代“平均值”。1.3 拉普拉斯滤波器拉普拉斯滤波器用于检测图像中的边缘。它通过检测强度变化迅速的区域来工作。输出将是一个突出显示边缘的图像然后可以用于边缘检测。这有助于识别和提取图像中的特征。1.4 双边滤波器双边滤波器在保留边缘的同时平滑图像。它通过考虑像素的空间接近度和颜色相似性来实现这一点。空间上靠近且颜色相似的像素将一起平滑。空间上远离或颜色差异很大的像素不会被平滑。这导致了一个具有锋利边缘的平滑图像。双边滤波器在边缘检测之前的噪声减少中可能有用。2. 使用分割技术检测和移除背景检测和移除图像的背景是许多计算机视觉任务中的重要预处理步骤。分割可以将前景主题与背景分离得到只包含主题的清晰图像。原图常见图像分割方法阈值化Thresholding阈值化是将图像转换为二值图像的方法。通过选择一个阈值像素值高于阈值的被标记为前景低于阈值的被标记为背景。你可以使用OpenCV的cv2.threshold()函数应用阈值化。阈值化效果如下边缘检测Edge Detection边缘检测可以找到图像中的边缘即对象之间的边界。Canny边缘检测是一种流行的算法你可以使用OpenCV的cv2.Canny()函数来实现。区域生长Region Growing区域生长是一种从种子点开始逐步将相邻像素添加到区域中的方法。你可以使用scikit-image的skimage.segmentation.region_growing()函数来实现。分水岭算法Watershed Algorithm分水岭算法将图像视为地形图通过模拟水流的流动来分割图像。你可以使用scikit-image的skimage.segmentation.watershed()函数来实现。3. 数据集增强数据增强是一种通过生成新的图像来人为扩展数据集大小的技术有助于减少过拟合并提高模型的泛化能力。常见的图像数据增强包括**翻转和旋转**对图像进行水平或垂直翻转以及90度、180度、270度的旋转可以生成新的数据点。这样做可以使模型更好地适应不同的视角和方向。裁剪将图像裁剪到不同的大小和比例可以创建具有不同视野的新图像。随机裁剪和特定比例的裁剪都是常见的方法。**颜色调整**调整图像的亮度、对比度、色调和饱和度可以创建具有不同外观的图像。但要小心不要使图像过度扭曲以免模型混淆。**图像叠加**在图像上叠加透明图像、纹理或噪声可以创建原始数据的变化。例如添加水印、标志、污垢或高斯噪声等。**结合技术**结合多种增强技术可以进一步扩展数据集。例如结合翻转、旋转、裁剪和颜色调整可以生成更多样化的图像。4. 像素值调整像素值调整类优化图像基础属性二值化将图像转换为仅含黑白两种颜色的二值图像像素值 0 或 255通过设定阈值区分前景如文字、目标和背景。应用场景文字识别、条形码提取、轮廓分割消除灰度渐变干扰。灰度化归一化作用避免因像素值范围不一致导致模型收敛困难如神经网络输入需标准化。二、案例图片文字提取器1. 原始版本import easyocr import cv2# 1. 初始化OCR阅读器指定语言中文英文启用GPU加速reader easyocr.Reader([ch_sim,en],gpuTrue)# 若没有GPU设为gpuFalse# 2. 读取图片并预处理关键步骤降噪、增强对比度img cv2.imread(D:\Program\DeepseekOCR-learning\Period1-PicPreprocess\Pic\paipai.jpg)# 读取图片gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 转为灰度图减少色彩干扰# 输入的灰度图像单通道高斯滤波去除噪声确定卷积核大小以及方向# 0x 方向和 y 方向的标准差σ。OpenCV 会自动根据核大小计算blur cv2.GaussianBlur(gray,(3,3),0)# 3. 调用OCR识别result reader.readtext(blur,detail1)# detail1返回详细信息坐标、置信度# 4. 提取纯文本并打印text [item[1] for item in result]print(识别结果,\n.join(text))1.1 代码解读1reader.readtext() 内部执行流程1图像预处理自动对输入图像此处为 blur 去噪后的灰度图进行二次优化2文本检测Text Detection使用预训练的文本检测模型在图像中定位所有可能的文本区域输出每个文本框的坐标。3文本识别Text Recognition对每个检测到的文本框裁剪出对应的图像区域将裁剪后的区域输入预训练的文本识别模型识别出文本内容。注计算识别结果的置信度0-1 之间越接近 1 越可靠。4结果格式化根据 detail 参数将检测和识别结果格式化为不同结构detail0仅返回纯文本列表[text1, text2, …]detail1返回包含坐标、文本、置信度的详细信息列表默认值。2text [item[1] for item in result]代码为列表推导式从 result 列表中提取每个文本区域的识别结果即 item[1]最终生成一个纯文本列表。执行逻辑遍历 result 中的每个元素 item取出 item[1]文本内容将所有文本拼接成新列表 text。3‘\n’.join(text)“/n”可以换成其他字符按需求进行使用2. 进一步探究对图片进行调整判别影响根据平均识别精确度来判别结果是否有被优化。1观察两种精确度的计算方式2下图分别是原图裁剪后旋转后的文本识别精确度添加文本框# fix_ocr.pyimport os import sysfromnltk import accuracy# 在导入任何可能使用OpenMP的库之前设置这些os.environ[KMP_DUPLICATE_LIB_OK]TRUEos.environ[OMP_NUM_THREADS]1os.environ[MKL_NUM_THREADS]1import cv2 import easyocr import matplotlib.pyplot as plt import numpy as np# 1. 设置中文字体关键步骤plt.rcParams[font.sans-serif][SimHei,Microsoft YaHei,DejaVu Sans]# 指定字体plt.rcParams[axes.unicode_minus] False# 正确显示负号#1initial OCR reading machine and choose language needing to recognizereader easyocr.Reader([en,ch_sim],gpuTrue)#2,read imgimg cv2.imread(./Pic/paipai.jpg)img_cut cv2.imread(./Pic/paipai_cut.jpg)img_rotation cv2.imread(Pic/paipai_spin.jpg)#3,process the img#convert the img to a grayscale imggary cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#remove noise by GaussianBlurblur cv2.GaussianBlur(gary,(3,3),0)#change original img to RGB and showimg_RGB cv2.cvtColor(img,cv2.COLOR_BGR2RGB)plt.figure(figsize(15,10))plt.imshow(img_RGB)#4,change img to text#reprocess the pic for augmentation and extract information from itresult reader.readtext(blur)accuracy 0fori,item in enumerate(result): coords item[0]print(f文本位置{i 1}{item[0]})print(f文本内容{item[1]})points np.array(coords,dtypenp.int32)forj in range(4): x1,y1 points[j]x2,y2 points[(j1)%4]plt.scatter(x1,y1,s30,cred)plt.plot([x1,x2],[y1,y2],colorred,linewidth2,linestyle--)plt.title(OCR文本检测边框基础版)plt.axis(off)plt.tight_layout()plt.show()1enumerate 不是元组而是一个内置函数它返回一个枚举对象迭代器。返回对象索引和内容enumerate返回的是元组序列总结图像预处理是 OCR 的关键前提不同滤波方式适配不同噪声类型背景分割、像素调整等操作可减少干扰提升文本区域的辨识度数据集增强则能助力 OCR 模型泛化能力提升。EasyOCR 文字提取核心步骤为「图像读取→灰度化 / 滤波降噪→文本检测定位文本框→文本识别→结果格式化」可通过参数控制返回纯文本或含坐标、置信度的详细信息满足不同使用需求。