打印图片数据处理方法、计算机装置及计算机可读存储介质
技术领域
本发明涉及打印机技术领域,具体的,涉及一种应用于打印机的打印图片数据处理方法,还涉及应用该方法的计算机装置以及应用该方法的计算机可读存储介质。
背景技术
现有传统图片数据处理算法是:先取目标图片的宽和高,定义一个尺寸为目标图片宽乘高的数组byte[],通过目标图片的每一个像素点的RGB值,通过对每个像素点的RGB值进行位图转换判断,将判断结果得到的值赋值到数组byte[]中对应的位置,从而获得打印图片数据。上述方法的缺点是:得到的打印图片数据发送给打印机打印出来的图片效果不清晰,视觉效果不佳。
发明内容
本发明的第一目的是提供一种提高打印清晰度,增加用户体验度的打印图片数据处理方法。
本发明的第二目的是提供一种提高打印清晰度,增加用户体验度的计算机装置。
本发明的第三目的是提供一种提高打印清晰度,增加用户体验度的计算机可读存储介质。
为了实现上述第一目的,本发明提供的打印图片数据处理方法包括:获取原始图像数据;对原始图像数据的每一个像素点进行加权处理,获得预处理图像数据;利用错误扩散法对预处理图像数据进行处理,获得误差扩散图像数据;对误差扩散图像数据进行位图转换,获得打印图像数据。
由上述方案可见,本发明的打印图片数据处理方法通过对原始图像数据进行加权处理,弥补在获取原图片过程中的丢失的像素值,从而更大程度的还原图片原始程度。同时通过错误扩散法对预处理图像数进行错误扩散处理,使得图片有更好的视觉效果,提高打印清晰度。
进一步的方案中,对原始图像数据的每一个像素点进行加权处理,获得预处理图像数据的步骤包括:获取原始图像数据的R通道图像数据、G通道图像数据和B通道图像数据;分别对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理,获得R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据;将R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据进行组合,获得预处理图像数据。
由此可见,在对原始图像数据进行加权处理时,分别原始图像数据的R通道图像数据、G通道图像数据和B通道图像数据进行加权处理,使得加权处理更加精细,从而提高处理的精确度。
进一步的方案中,分别对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理的步骤包括:获取当前通道图像数据中以当前像素点为中心的(2N-1)×(2N-1)个像素组成像素数组,其中,N大于或等于2;根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值。
进一步的方案中,根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值的步骤包括:将预设转换数组和像素数组在同一坐标的数值相乘,获得乘积,将所有乘积相加,获得当前像素点的加权像素值。
由此可见,在对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理时,通过一个预设转换数据对当前像素进行加权处理,融合当前像素点相邻的所有像素点进行加权处理,可进一步提高图像的还原度。
进一步的方案中,利用错误扩散法对预处理图像数据进行处理,获得误差扩散图像数据的步骤包括:遍历预处理图像数据的每一个像素点,对预处理图像数据的每一个像素点相邻的若干个预设方向上的像素点进行错误扩散,获得误差扩散图像数据。
由此可见,在对预处理图像数据进行错误扩散处理时,利用每一个像素点对齐相邻的若干个预设方向上的像素点进行错误扩散,科可使得像素点之间的连续性更强,视觉效果更加。
进一步的方案中,对预处理图像数据的每一个像素点相邻的若干个预设方向上的像素点进行错误扩散的步骤包括:获取当前方向像素点所对应的RGB值;根据当前方向像素点所对应的预设错误值对当前方向像素点的RGB值进行错误扩散计算,获得当前方向像素点的错误RGB值;将当前方向像素点的RGB值与错误RGB值进行相加,获得当前方向像素点的新RGB值。
由此可见,每个方向的像素点均对应设置有相应的预设错误值,通过预设错误值对当前方向像素点的RGB值进行错误扩散计算,得到错误RGB值,并将错误RGB值与当前方向像素点的RGB值相加,则可得到当前方向像素点的新RGB值。
进一步的方案中,根据当前方向像素点所对应的预设错误值对当前方向像素点的RGB值进行错误扩散计算,获得当前方向像素点的错误RGB值的步骤包括:确认当前方向像素点的RGB值所处的值段,根据值段将当前方向像素点的RGB值最值化处理,得到当前方向像素点最值化后的RGB值;将最值化后的RGB值与预设错误值相乘,得到错误RGB值。
由此可见,在获取错误RGB值时,需要将当前的RGB值最值化,得到当前方向像素点最值化后的RGB值,再通过最值化后的RGB值与预设错误值相乘,得到错误RGB值,这样得到的错误RGB值更加合理,使得错误扩散的效果更佳。
进一步的方案中,所有预设方向上像素点所对应的预设错误值之和等于1。
由此可见,所有预设方向上像素点所对应的预设错误值之和等于1,使得在错误扩散计算更佳方便,提高图像转换的效率。
为了实现上述第二目的,本发明提供的计算机装置包括处理器,该处理器用于执行存储器中存储的计算机程序时实现上述的打印图片数据处理方法的各个步骤。
为了实现上述第三目的,本发明提供的计算机可读存储介质,其上存储有计算机程序,且计算机程序被处理器执行时实现上述的打印图片数据处理方法的各个步骤。
附图说明
图1是本发明打印图片数据处理方法实施例的流程图。
图2是本发明打印图片数据处理方法实施例中获得预处理图像数据步骤的流程图。
图3是本发明打印图片数据处理方法实施例中对非边缘像素点进行加权处理过程的示意图。
图4是本发明打印图片数据处理方法实施例中对边缘像素点进行加权处理过程的示意图。
图5是本发明打印图片数据处理方法实施例中获得误差扩散图像数据步骤的流程图。
图6是本发明打印图片数据处理方法实施例中一个图像中每一个像素点的RGB值的展示图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明打印图片数据处理方法是应用在计算机设备中的计算机程序。打印图片数据处理方法用于实现对图片数据进行优化处理,使得打出效果更清晰。本发明还提供一种计算机装置,该装置包括有处理器,处理器可以执行应用程序的指令,从而实现上述打印图片数据处理方法的各个步骤。本发明还提供一种计算机可读存储介质,其上存储有计算机程序,且计算机程序被处理器执行时实现上述的打印图片数据处理方法的各个步骤。
打印图片数据处理方法实施例:
如图1所示,本发明的打印图片数据处理方法在对图像进行处理时,首先执行步骤S1,获取原始图像数据。获取原始图像数据可通过读取存储单元中的图像数据或者接收上位机所发送的图像数据获得。本实施例中,在Android客户端获取jpg格式的原始图像数据是通过BitmapFactory.decodeResource()函数获取得到。
获得原始图像数据后,执行步骤S2,对原始图像数据的每一个像素点进行加权处理,获得预处理图像数据。由于获取到的原始图像数据跟原图像会存在差异,为了弥补在获取原图像过程中的丢失的像素值,需要对原始图像数据的每一个像素点进行加权处理,更大程度的还原原始图片。
参见图2,在进行对原始图像数据的每一个像素点进行加权处理,获得预处理图像数据时,先执行步骤S21,获取原始图像数据的R通道图像数据、G通道图像数据和B通道图像数据。R通道图像数据、G通道图像数据和B通道图像数据分别对应原始图像数据在R通道的图像数据、在G通道的图像数据和在B通道的图像数据。
获得原始图像数据的R通道图像数据、G通道图像数据和B通道图像数据后,执行步骤S22,分别对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理,获得R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据。其中,分别对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理的步骤包括:获取当前通道图像数据中以当前像素点为中心的(2N-1)×(2N-1)个像素组成像素数组,其中,N大于或等于2;根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值。
在分别对R通道图像数据、G通道图像数据和B通道图像数据的每一个像素点进行加权处理时,需要根据当前像素点相邻的像素点进行加权处理。在对当前像素点进行加权处理时,需获取当前通道图像数据中以当前像素点为中心的(2N-1)×(2N-1)个像素组成像素数组,其中,N大于或等于2。像素数组的尺寸可根据需要进行设置。本实施例中,像素数组的尺寸为3×3。
获取像素数组后,根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值。其中,预设转换数组是通过试验获得的最佳的转换数组,由于处理的过程是通过当前像素点逐级影响到周围的像素点,因此,需要转换数组符合正态分布,转换数组中间位置(即,当前像素点对应的位置)的值最大,依次向四周的值递减,从而得到转换数组。根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值的步骤包括:将预设转换数组和像素数组在同一坐标的数值相乘,获得乘积,将所有乘积相加,获得当前像素点的加权像素值。
例如,参见图3,当前像素点为非边缘像素点时,根据与像素数组相同尺寸的预设转换数组和像素数组进行加权求和,获得当前像素点的加权像素值时,获取到当前通道图像数据T1中以当前像素点A1为中心的像素数组Z1,预设转换数组为Z2。在加权求和时,将预设转换数组Z2和像素数组Z1在同一坐标的数值相乘,获得乘积,将所有乘积相加,获得当前像素点的加权像素值,即,6×(-1)+2×0+9×1+2×(-2)+5×0+5×2+2×(-1)+7×0+7×1=14。得到当前像素点的加权像素值“14”后,将加权像素值“14”赋值到一个与原始图像相同尺寸的空数组T2中,赋值的位置与当前像素点的坐标相对应。在当前通道图像数据T1完成所有像素点的加权处理后,空数组T2则成为当前通道的通道图像数据。
若当前像素点为边缘像素点时,由于组成像素数组的元素不足,需要将当前通道图像数据的所有边缘像素点向外平移,使得组成像素数组的元素的数量满足要求。参见图4,当前像素点A3为边缘像素点,当前通道图像数据T1中与前像素点A3相邻的像素点只有三个,组成像素数组的元素的数量不足,因此,需将所有边缘像素点向外平移,使得以边缘像素点为中心组成像素数组的元素的数量满足要求,获得像素数组Z3。将预设转换数组Z2和像素数组Z3在同一坐标的数值相乘,获得乘积,将所有乘积相加,获得当前像素点的加权像素值“-9”,将加权像素值“-9”赋值到一个与原始图像相同尺寸的空数组中,赋值的位置与当前像素点的坐标相对应。
获得R通道图像数据、G通道图像数据和B通道图像数据中每一个像素点的加权像素值后,得到R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据。
R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据后,执行步骤S23,将R通道预处理图像数据、G通道预处理图像数据和B通道预处理图像数据进行组合,获得预处理图像数据。将三个通道的图像进行组合的技术已为本领域技术人员的公知技术,在此不再赘述。
在获得预处理图像数据后,执行步骤S3,利用错误扩散法对预处理图像数据进行处理,获得误差扩散图像数据。其中,利用错误扩散法对预处理图像数据进行处理,获得误差扩散图像数据的步骤包括:遍历预处理图像数据的每一个像素点,对预处理图像数据的每一个像素点相邻的若干个预设方向上的像素点进行错误扩散,获得误差扩散图像数据。需要进行错误扩散的若干个预设方向上的像素点,可根据试验结果确定。本实施例中,每一个像素点相邻的若干个预设方向上的像素点是每一个像素点相邻的右上、右、下和下右四个方向上的像素点。
参见图5,在对预处理图像数据的每一个像素点相邻的若干个预设方向上的像素点进行错误扩散时,先执行步骤S31,获取当前方向像素点所对应的RGB值。每一个RGB值包括像素点在R通道、G通道和B通道的三个值,可直接由预处理图像数据获得。
获得RGB值后,执行步骤S32,根据当前方向像素点所对应的预设错误值对当前方向像素点的RGB值进行错误扩散计算,获得当前方向像素点的错误RGB值。每一个像素点相邻的若干个预设方向上的像素点均具有对应的预设错误值,所有预设方向上像素点所对应的预设错误值之和等于1。预设错误值可通过不断的试验获得,使得错误扩散效果最佳。本实施例中,每一个像素点相邻的右上、右、下和下右四个方向上的像素点所对应的错取值分别为0.1875f、0.4375f、0.3125f和0.0625f。
根据当前方向像素点所对应的预设错误值对当前方向像素点的RGB值进行错误扩散计算,获得当前方向像素点的错误RGB值的步骤包括:确认当前方向像素点的RGB值所处的值段,根据值段将当前方向像素点的RGB值最值化处理,得到当前方向像素点最值化后的RGB值;将最值化后的RGB值与预设错误值相乘,得到错误RGB值。在根据预设错误值进行错误扩散计算时,需先判断当前方向像素点的RGB值所处的值段。本实施例中,值段分为两段,即最大值段和最小值段。根据当前方向像素点的RGB值所对应值段将当前方向像素点的RGB值最值化处理。当RGB值中的R值、G值或B值处于最大值段时,将该值取值为最大值,当RGB值中的R值、G值或B值处于最小值段时,将该值取值为最小值。得到当前方向像素点最值化后的RGB值后,将最值化后的RGB值中的R值、G值和B值分别与当前方向像素点的错误RGB值相乘,从而得到当前方向像素点的错误RGB值。
例如,参见图6,0至127的范围为最小值段,128至255的范围为最大值段;当RGB值中的R值、G值或B值大于或等于128时,将该值取最大值,即255;当RGB值中的R值、G值或B值小于128时将该值取最小值,即0。基于像素点A5进行错误扩散,当前方向像素点A6是处于右边方向上的像素点,对应的错误值为“0.4375f”。当前方向像素点A6的RGB值中,R值为230,G值为198,B值为14。通过最值化处理,得到最值化后的RGB值。最值化后的RGB值中,R值为255,G值为255,B值为0。将最值化后的RGB值中的R值、G值和B值分别与当前方向像素点A6对应的错误值“0.4375f”相乘,得到当前方向像素点的错误RGB值,错误RGB值中,R值为111.5625,G值为111.5625,B值为0。
得到当前方向像素点的错误RGB值后,执行步骤S33,将当前方向像素点的RGB值与错误RGB值进行相加,获得当前方向像素点的新RGB值。例如,参见图6,当前方向像素点A6的RGB值中,R值为230,G值为198,B值为14。当前方向像素点A6得到的错误RGB值中,R值为111.5625,G值为111.5625,B值为0。将当前方向像素点的RGB值与错误RGB值进行相加,则可获得当前方向像素点的新RGB值,新RGB值中,R值为341.5625,G值为309.5625,B值为14。
通过遍历预处理图像数据的每一个像素点,获得每一个像素点的新RGB值,从而获得误差扩散图像数据。需要说明的是,在进行错误扩散时,部分像素点会存在多次错误扩散处理的情况,本发明的处理方式是:后一次错误扩散处理基于前一次错误扩散处理后得到的RGB值的基础上进行,即,前一次获得新RGB值后,下一次在对该像素点进行错误扩散处理时,则根据前一次得到的新RGB值进行错误扩散计算。
获得误差扩散图像数据后,执行步骤S4,对误差扩散图像数据进行位图转换,获得打印图像数据。在获得误差扩散图像数据后,对误差扩散图像数据中每一个像素点的RGB值进行位图转换判断。由于RGB值是一个32位数值,不便于对RGB值进行判断,可将一个32位的RGB值转化为8位的值进行判断。在对误差扩散图像数据中每一个像素点的RGB值进行判断时,通过单取RGB值中的一个B值来作为一个像素点的8位的代表GRB值,再通过8位的代表GRB值与中间值(8位的二进制值最大值为255,中间值可取127或128)进行判断,大于中间值则将该像素点赋值为1,小于中间值则将该像素点赋值为0,从而得到打印图像数据。
计算机装置实施例:
本实施例的计算机装置包括处理器,处理器执行计算机程序时实现上述打印图片数据处理方法实施例中的步骤。
例如,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
计算机装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,计算机装置可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机装置还可以包括输入输出设备、网络接入设备、总线等。
例如,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。例如,存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(例如声音接收功能、声音转换成文字功能等)等;存储数据区可存储根据手机的使用所创建的数据(例如音频数据、文本数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
计算机可读存储介质实施例:
上述实施例的计算机装置集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,实现上述打印图片数据处理方法实施例中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述打印图片数据处理方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
由上述可知,本发明的打印图片数据处理方法通过对原始图像数据进行加权处理,弥补在获取原图片过程中的丢失的像素值,从而更大程度的还原图片原始程度。同时通过错误扩散法对预处理图像数进行错误扩散处理,使得图片有更好的视觉效果,提高打印清晰度。
需要说明的是,以上仅为本发明的优选实施例,但发明的设计构思并不局限于此,凡利用此构思对本发明做出的非实质性修改,也均落入本发明的保护范围之内。