• 引言

        当前,打印机和复印机等办公自动化设备在人们工作和生活中的广泛使用,在给人们带来便利的同时,也产生了大量的废弃打印纸,如图,若作为垃圾扔掉,造成环境污染;即使回收再利用,也要产生高昂的回收、存储、整理、运输和加工费用。随着“绿水青山就是金山银山”的理念的深入和我国2035年实现碳中和的目标的确立,废弃打印纸的有效再利用将成为一项重要的研究课题。

                                       

       经过观察和调查,在很多扔掉的打印纸中,不少都是只打印了一点内容,并没充分使用;而且很多纸张的表面还是非常光滑平整。这些打印纸作为垃圾扔掉,产生浪费的同时还会增加大量的处理成本,甚至会造成环境污染。下图是3张被扔掉的废弃打印纸,第一张只打印了一个标题,第二张只打印了两行字,第三章打印了几个简单图案。它们统一的特点是:纸上只打印了少量的内容,空白区域还有很多。经调研调研,多数打印纸存在一半以上打印内容少和利用率低的问题。若作为垃圾扔掉或人工收回,都会产生资源浪费和人力浪费。

                       

        目前还国内外主要研究的是如何对于普通纸张的回收和利用,并没有专门针对打印纸再利用的研究。对于普通纸的回收和利用,主要是采用人工回收填埋和燃烧,部分会被工厂进行二次加工。文献[1]提出了一种碎纸修复术,主要是采用MATLAB程序语言对普通碎纸进行识别和修复,但算法过于复杂,降低了识别速度;并且由于是对碎纸进行识别和修复,效果也不是太好。

1、打印纸可用区域和可再生打印纸机模型

       如何能更加高效地使用打印纸呢?本文提出了打印纸的“可用区域”的概念,即一张打印纸可再利用的区域。例如,一张没使用过的打印纸,它的可用区域应该是整个纸张;而一张使用过的打印纸,它的可用区域是满足面积大于某个阈值(例如30行高度或100行像素高度或白色区域占比40%)打印纸。上图中三张打印纸的其可用区域,如图红色矩形框部分所示。

                       

       基于打印纸可用区域,提出了一种“可再生打印纸机”模型,其基本工作原理如下:

       (1)废弃打印纸的可用区域识别和裁剪。即对于用过的打印纸,找出其可用区域并使用区域进行裁剪。

      (2)打印纸可用区域拼接和再生。利用打印纸标准尺寸的原理,可以将两张打印纸进行压制和对接,中间接触处喷入无痕胶水,加热后完成粘贴,从而拼接成一张全新的打印纸。模型原理如图4。 若胶水成本太高,可采取尺寸分类方法,对不同尺寸的白纸进行收集再利。

                                  

2、打印纸可用区域的算法

       在可再生打印纸机器中,最重要一步是如何实现打印纸可用区域的自动识别。因为在几千、几万张“废弃”打印纸中,仅凭人眼识别纸张的可用区域和手动放置纸张非常困难和缓慢。本文提出了一种自动识别打印纸可用区域的算法:

1.对于给定的一张复印纸,对其进行扫描或拍照,形成计算机图像(png或jpg格式),存放在计算机上,每张值表示为像素点阵。

   (1)判断,若图像一行的像素几乎都为白色,则该行为可使用行。 

   (2)若连续多行都是可使用行,且构成的矩形面积大于可用区域的最小值,则该区域判定为可用区域。

    (3)通过连续判断每一像素行,可以依次找出整个复印纸内容中的可用区域,并进行标注。

       如果将纸的打印和再生功能结合,就可以研制成“打去印一体机”,也就是将打印机功能和打印纸再生功能结合在一起的机器,不但可以打印,而且可以对打印纸进行可用区域识别和再利用。

3、打印纸可用区域识别实现

       通过使用Python语言以及第三方opencv库,可以很容易地实现打印纸可用区域自动识别程序。实验结果如下。若设置可用区域最小高度为打印纸图像上30个像素高度,则程序对张复印纸的可用区域识别效果如图所示。

                                       

                        

若可用区域最小高度设置为100个像素,程序运行可以得到可用区域如图。

                                

       对识别出的空白区域进行自动裁剪,得到的白色复印纸可以进行分类应用,可以实现有效废纸再利用。

4、打印纸可用区域识别程序

      利用Python和opencv实现的代码如下:

#'''====================================
#打印纸可用区域自动识别程序
#======================================='''
import cv2 #导入opencv包
import numpy as np #
def point_is_white(point): #判断一个点是否为白色或接近白色
    for i in point:
        if i<250:
            return 0
    return 1      
def line_is_white(row,col): #判断一行点是否为白色白色
        blackpoints=0
        for i in range(0,col):
           if (point_is_white(image[row,i])==0):
               blackpoints=blackpoints+1
        if blackpoints>10:
           return 0
        else:
           return 1

def drawrec(img,row1,row2):  #按照左上角和右下角画出矩形区域
    cv2.rectangle(img, (0,row1), (col-1,row2), color=(0, 0, 255), thickness=1)


def find_effecitve_area(img,row,col):#找到有效区域
    effective_area=0
    line1=0
    for line2 in range(line1,row):
        if line_is_white(line2,col)==1:
            line2=line2+1
            if ((line2-line1)>100):
                effective_area=1
        else:
            if effective_area==1:
                drawrec(img,line1,line2)
            effective_area=0
            line2=line2+1
            line1=line2
    if (effective_area==1):
        drawrec(img,line1,line2-1)
        
img = cv2.imread("D:\\img\\img3.png")#读取图像
image = np.array(img)
row = image.shape[0]
col = image.shape[1]
find_effecitve_area(image,row,col)
cv2.imshow("EffectiveArea",image)#显示图像
cv2.waitKey(0)

5、结论

        本文提出了一种打印纸可用区域概念和自动识别算法,在此基础上,提出了“可再生打印纸机器”和“打去印一体机”的模型和工作流程 ,能有效实现废弃打印纸的再利用,减少浪费和节约成本。未来的工作是进一步实现打去印一体机的设计和制造。

参考文献

1.关于碎纸片的自动拼接复原的数学模型问题,https://wenku.baidu.com/view/f19453c007a1b0717fd5360cba1aa81144318fe7.html

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐