图像预处理关键技术:四方法实现图像二值化

版权申诉
0 下载量 90 浏览量 更新于2024-10-08 收藏 11.58MB ZIP 举报
资源摘要信息:"图像二值化处理是数字图像处理领域的一个基础且重要的步骤。二值化能够将具有不同灰度级的图像转换为只有黑白两种颜色的图像,这种方法在图像分割、特征提取以及图像识别等领域中有着广泛的应用。在本压缩包文件中,包含了多种不同的二值化方法,通过这些方法可以对图像进行有效的预处理。 首先,图像二值化通常依赖于一个阈值的选择,该阈值决定了像素值将被分为高(白色)或低(黑色)的界限。在二值化过程中,原始图像的每个像素点将被赋予一个新的像素值,要么是0(黑色),要么是1(白色),这取决于它是否高于或低于所选择的阈值。二值化后的图像通常包含较少的信息量,但是更加突出图像的主要特征,有利于后续处理。 在给定的文件中,erzhihua3.m、erzhihua.m、erzhi.m、erzhihua1.m文件很可能是用于实现图像二值化的MATLAB脚本文件。MATLAB是一种常用于工程计算、数据分析以及算法开发的高级编程语言和交互式环境。这些脚本文件可能包含了实现特定二值化算法的代码,比如Otsu方法、固定阈值法、自适应阈值法等。 Otsu方法是一种自适应的阈值确定方法,它可以自动计算一个使得类内方差最小而类间方差最大的阈值。这种方法能够适应图像的全局亮度变化,因此对于包含不同光照条件下的图像非常有效。 固定阈值法是一种最为基础的二值化方法,通常在用户已经知道了图像的具体应用场景和光照条件相对稳定的情况下使用。在这种方法中,用户将手动设定一个固定的阈值,然后根据这个阈值对图像进行二值化处理。 自适应阈值法考虑了图像局部区域的光照条件,通过对图像进行局部区域的分析,为每个像素点计算出一个阈值。这使得自适应阈值法能够更好地处理光照不均匀的图像。 此外,zjl.bmp和zjl1.bmp这两个文件可能是经过二值化处理前后的图像文件,用于演示二值化算法的效果。这些文件是位图格式,常用以存储数字图像,格式简单且兼容性好,非常适合用于教学和图像处理算法的演示。 二值化在图像预处理中的作用主要有以下几点: 1. 提高图像质量:通过消除灰色过渡,二值化后的图像看起来更清晰、更干净。 2. 减少数据量:二值图像比灰度图像或彩色图像占用更少的存储空间和处理时间。 3. 突出特征:二值化有助于突出图像中的主要特征,对于后续的图像分析和识别有积极的影响。 4. 方便处理:二值图像的处理算法相对简单,而且易于实现。 图像二值化处理是图像分析和处理过程中不可或缺的一部分,它通过简化图像数据,使得图像处理算法运行更加高效,为更高级别的图像分析和识别奠定了基础。"

import time start_time = datetime.datetime.now() print("start preprocessing..................") n = 10000 (X_train, train_labels) = rm.load_mnist('E:\design project\wenquxing22a-master\sw\swSim-mnist\scripts', kind='train') otsu_imgs = [] images = [] for (k, j) in zip(range(n),range(1, n + 1)): o = sf.OTSU(X_train[k].reshape([28,28])) otsu_imgs.append(o.Otsu()) sf.processBar(j, n, "Otsuing") print("") # image normalization for (img, i) in zip(otsu_imgs, range(1, n + 1)): images.append(sf.deskew(img / 255.0)) sf.processBar(i, n, "Normalization") print("") images = np.asarray(images) np.save("E:/design project/wenquxing22a-master/sw/swSim-mnist/scripts/result date/nomalizedData_after_OTSU.npy", images) np.save("E:/design project/wenquxing22a-master/sw/swSim-mnist/scripts/result date/label.npy", train_labels) otsu_imgs_test = [] X_test, test_label = rm.load_mnist(r'E:\design project\wenquxing22a-master\sw\swSim-mnist\scripts',kind='t10k') testimages = [] for (k, j) in zip(range(n),range(1, n + 1)): o = sf.OTSU(X_test[k].reshape([28,28])) otsu_imgs_test.append(o.Otsu()) sf.processBar(j, n, "Otsuing") print("") # image normalization for img in otsu_imgs_test: testimages.append(sf.deskew(img / 255.0)) #soft_test = sf.imgSoft(testimages, soft_test, 0.80) #soft_test = np.asarray(soft_test) np.save("E:/design project/wenquxing22a-master/sw/swSim-mnist/scripts/result date/nomalizedDataTest.npy", testimages) np.save("E:/design project/wenquxing22a-master/sw/swSim-mnist/scripts/result date//label_test.npy",test_label) end_time = datetime.datetime.now() print("done!") print("running time: ", end_time - start_time)

2023-06-10 上传