CN116485691B - 一种基于直方图均衡优化算法的图像处理方法及系统 - Google Patents
一种基于直方图均衡优化算法的图像处理方法及系统 Download PDFInfo
- Publication number
- CN116485691B CN116485691B CN202310462081.6A CN202310462081A CN116485691B CN 116485691 B CN116485691 B CN 116485691B CN 202310462081 A CN202310462081 A CN 202310462081A CN 116485691 B CN116485691 B CN 116485691B
- Authority
- CN
- China
- Prior art keywords
- gray
- slave
- gray value
- histogram
- original image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 26
- 238000005457 optimization Methods 0.000 title claims abstract description 21
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000013507 mapping Methods 0.000 claims abstract description 91
- 230000006870 function Effects 0.000 claims abstract description 52
- 238000004364 calculation method Methods 0.000 claims abstract description 37
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000005540 biological transmission Effects 0.000 claims description 57
- 238000009825 accumulation Methods 0.000 claims description 32
- 230000001186 cumulative effect Effects 0.000 claims description 25
- 238000009826 distribution Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 8
- 125000004122 cyclic group Chemical group 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 18
- 238000012546 transfer Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- ODKSFYDXXFIFQN-UHFFFAOYSA-M argininate Chemical compound [O-]C(=O)C(N)CCCNC(N)=N ODKSFYDXXFIFQN-UHFFFAOYSA-M 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/40—Image enhancement or restoration using histogram techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于直方图均衡优化算法的图像处理方法及系统,涉及并行计算领域,该方法包括以下步骤:确定从核所需处理的原始图像像素的均衡像素范围,计算其灰度值并储存在灰度值缓存区;利用DMA将灰度值传输到主存;在多从核灰度直方图共享区对灰度值进行累加计算,进行从核列阵全同步,将累加结果储存到共享灰度直方图共享区;计算映射函数;利用映射函数将主存中的灰度值进行映射,并将映射后的灰度值储存在映射数据缓存区;利用DMA将映射数据缓存区中的灰度值传输到主存。本发明采用新一代神威超算进行多从核并行处理图像,实现了图像处理过程中的负载均衡,提高了处理图像的效率,能适应多图像处理场景。
Description
技术领域
本发明涉及并行计算领域,具体涉及一种基于直方图均衡优化算法的图像处理方法及系统。
背景技术
直方图均衡算法是一种在数字图像处理中广泛应用的图像增强技术。它通过对图像像素的灰度级进行统计分析,调整图像的灰度分布,使图像整体的对比度得到提升,从而达到增强图像质量的目的。然而,在大规模图像处理应用中,传统的串行直方图均衡化算法已经无法满足实时性和处理速度的要求。因此,基于并行计算的直方图均衡算法成为了近年来的研究热点。
新一代神威是中国自主研发的E级超算,采用多节点架构,每个节点包含6个核组,每个核组包含1个主核和64个从核。每个从核都配备有256KB的LDM(LocalDataMemory),实现了高速数据读写。神威的主存和LDM之间可以通过DMA(DirectMemoryAccess)进行数据传输,从核和从核之间可以通过RMA(RemoteMemoryAccess)进行细粒度通信,这种设计极大地提高了神威的并行计算能力。相对于神威太湖之光,新一代神威还支持大共享模式以及共享LDM,从而能够更好地支持并行加速计算。
针对直方图均衡化算法的热点,通常集中在直方图灰度值计算和累积灰度分布直方图计算上,这些计算需要大量的数据交换和存储操作,因此,这些计算成为了算法中的性能瓶颈,降低了图像处理的效率。现目前,在新一代神威的并行计算过程中,需要解决如何高效地实现负载均衡、如何利用缓存和局部存储器、以及如何通过有效的通信和同步机制来实现并行计算。
发明内容
针对现有技术中的上述不足,本发明提供了一种基于直方图均衡优化算法的图像处理方法及系统,能够实现负载均衡以及有效利用缓存和局部存储器,并通过有效的通信和同步机制来实现并行计算以提升图像处理的效率。
为了达到上述发明目的,本发明采用的技术方案为:
一种基于直方图均衡优化算法的图像处理方法,包括以下步骤:
S1、根据从核编号和图像像素总数确定从核所需处理的原始图像像素的均衡像素范围;
S2、主存将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核;
S3、计算步骤S1中均衡像素范围内的原始图像像素的灰度值,将灰度值储存在灰度值缓存区;
S4、利用DMA将步骤S3中灰度值缓存区中的灰度值交替同步传输到主存;
S5、在多从核灰度直方图共享区对步骤S3中的灰度值进行累加计算,并对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区;
S6、根据步骤S5中共享灰度直方图共享区的累加结果确定映射函数;
S7、利用步骤S6中的映射函数将步骤S4中传输到主存的灰度值进行映射,并将映射后的灰度值储存在映射数据缓存区;
S8、利用DMA将步骤S7中映射数据缓存区中的灰度值交替同步传输到主存。
进一步地,步骤S1包括以下分步骤:
S11、根据从核编号确定总从核数;
S12、将图像像素总数除以分步骤S11中的总从核数,得到单个从核处理图像像素数;
S13、根据从核编号和分步骤S12中的单个从核处理图像像素数,确定从核所需处理的原始图像像素的均衡像素范围。
进一步地,步骤S2包括以下分步骤:
S21、主存利用运行函数控制从核进入快速工作模式;
S22、主存利用加速线程任务执行函数将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核。
进一步地,步骤S3包括以下分步骤:
S31、计算步骤S1中均衡像素范围的原始图像像素的灰度值,表示为:
gray=0.299*R+0.587*G+0.114*B
其中:gray为灰度值,R为原始图像像素的红色通道值,G为原始图像像素的绿色通道值,B为原始图像像素的蓝色通道值;
S32、将分步骤S31中的灰度值存储在灰度值缓存区,并将灰度值乘以偏移值进行偏移;
S33、将分步骤S32偏移后的灰度值加上从核编号作为下标;
S34、将分步骤S33中加上下标的灰度值储存在灰度值缓存区。
进一步地,步骤S4包括以下分步骤:
S41、创建传输变量,并根据计算的原始图像像素的灰度值更新传输变量;
S42、根据分步骤S41中的传输变量确定步骤S3中灰度值缓存区中的灰度值数量;
S43、判断分步骤S42中灰度值缓存区中的灰度值数量是否小于灰度值缓存区最大值;若是则跳转到分步骤S41,否则进入分步骤S44;
S44、利用DMA将灰度值缓存区中的灰度值交替同步传输到主存。
进一步地,步骤S5包括以下分步骤:
S51、确定所需处理的灰度级总数;
S52、根据从核编号和分步骤S51中的灰度级总数,确定从核所需处理的灰度级;
S53、采用循环遍历对分步骤S52中所需处理的灰度级进行累加计算;
S54、对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
进一步地,步骤S53包括以下分步骤:
S531、确定外层循环遍历范围;
S532、确定内层循环遍历范围;
S533、根据分步骤S531中的外层循环遍历范围和分步骤S532中的内层循环遍历范围,采用循环遍历对分步骤S52中所需处理的灰度级进行累加。
进一步地,步骤S54包括以下分步骤:
S541、对每个从核设置全同步函数;
S542、根据分步骤S541中的全同步函数控制提前完成计算任务的从核执行等待指令以完成从核列阵全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
进一步地,步骤S6包括以下分步骤:
S61、根据步骤S5中共享灰度直方图共享区的累加结果,计算累积灰度分布直方图;
S62、确定缩放比例参数,表示为:
alpha=255.0/(height*width)
其中:alpha为缩放比例参数,height为原始图像高度,width为原始图像宽度;
S63、将分步骤S61中的累积灰度分布直方图乘以分步骤S62中的缩放比例参数,对累积灰度分布直方图进行缩放;
S64、将分步骤S63中缩放后的累积灰度分布直方图进行取整,得到映射函数。
一种应用上述方法的基于直方图均衡优化算法的图像处理系统,包括:
数据划分模块,用于根据从核编号和图像像素总数划分从核所需处理的原始图像像素的均衡像素范围;
数据传输模块,用于将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核,并利用DMA将灰度值缓存区的灰度值和映射数据缓存区的灰度值传输到主存;
数据迭代传输模块,用于控制从核交替同步进行数据计算和数据传输;
数据缓存模块,包括灰度值缓存区和映射数据缓存区;灰度值缓存区用于缓存每个从核计算的灰度值,映射数据缓存区用于缓存利用映射函数进行映射后得到的灰度值;
数据共享储存模块,包括多从核灰度直方图共享区和共享灰度直方图共享区;多从核灰度直方图共享区用于对灰度值进行累加计算,共享灰度直方图共享区用于储存多从核灰度直方图共享区的累加结果;
从核列阵同步模块,用于对从核列阵进行全同步。
本发明具有以下有益效果:
(1)本发明能够将图像处理任务均匀分配给从核,保证每个从核负责计算的像素区间为连续且均匀的,从而实现了负载均衡;
(2)本发明利用新一代神威超算的架构特征,可以将每个从核的LDM空间配置为由硬件控制的数据缓存模块。在读取主存中原始图像像素的红色通道值、绿色通道值、蓝色通道值和灰度值时,通过这种方式可以减少对LDM空间的需求,并实现更好的加速效果;
(3)本发明创建了共享灰度直方图共享区,与传统并行处理方式相比,降低了因灰度直方图频繁更新带来的性能开销,同时也避免了从核之间细粒度通信的环节;
(4)本发明根据DMA将灰度值缓存区的灰度值和映射数据缓存区映射后的灰度值传输到主存时,通过迭代DMA的方法,使每个从核计算出的灰度值以及通过映射函数映射之后的灰度值,都可以储存在从核本地LDM之中,即灰度值缓存区和映射数据缓存区中,一定程度上实现了LDM空间的手动虚拟化;
(5)本发明利用全同步函数对从核列阵进行全同步,实现了对从核列阵的异步控制与同步操作,从而在保证满负载情况下计算结果的正确性,即保证了所有从核在利用多从核灰度直方图共享区累加计算完成后再确定累加结果;
(6)本发明中每个从核在计算灰度值时,图像像素总数可能不是灰度值缓存区大小的整数倍,因此会存在一些冗余的图像像素。本发明将这些冗余的图像像素一直储存于灰度值缓存区中,从而减少了两次数据传输的开销。
附图说明
图1为一种基于直方图均衡优化算法的图像处理方法流程图;
图2为本发明中主存和LDM数据交互示意图;
图3为一种应用上述方法的基于直方图均衡优化算法的图像处理系统结构图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,一种基于直方图均衡优化算法的图像处理方法,包括步骤S1-S8:
S1、根据从核编号和图像像素总数确定从核所需处理的原始图像像素的均衡像素范围。
在本发明的一个可选实施例中,本发明基于单个核组对图像进行处理,每个核组包含1个主核和64个从核,即0号从核~63号从核。本发明中主核即为主存。本发明通过数据划分模块,可以根据从核编号和图像像素总数划分从核所需处理的原始图像像素的均衡像素范围,即每个从核需要处理像素的最小数量,记为num_pixel_per_slave。
具体地,本发明根据从核编号可以确定从核的总数量,并使用图像像素总数除以从核的总数量,然后将num_pixel_per_slave乘以从核编号_PEN,得到当前从核需要处理的起始像素位置,记为begin_pixel。同样地,可以将num_pixel_per_slave乘以(_PEN+1),得到当前从核需要处理的结束像素位置,记为end_pixel。最后,对于63号从核,由于存在像素总数不能被从核数量整除的情况,需要将end_pixel设置为图像像素总数。
步骤S1包括以下分步骤:
S11、根据从核编号确定总从核数。
S12、将图像像素总数除以分步骤S11中的总从核数,得到单个从核处理图像像素数。
S13、根据从核编号和分步骤S12中的单个从核处理图像像素数,确定从核所需处理的原始图像像素的均衡像素范围。
S2、将主存中步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核。
在本发明的一个可选实施例中,本发明使用数据传输模块,将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核,原始图像像素从主存传输到每个从核,具体传输到每个从核中的LDM(Local Data Memory)空间,如图2所示。每个从核都配备有256KB的LDM。
具体地,在Linux操作系统下,通过定义结构体BMPHeader并读取原始图像像素到header,实现对BMP格式的原始图像像素进行读取。该结构体定义了BMP格式的原始图像像素的文件头和原始图像像素的相关信息,并通过fread函数将原始图像像素读入到该结构体BMPHeader变量中。随后,通过分配内存空间并使用fread函数读取原始图像像素,将BMP格式的原始图像像素保存在指针变量pixels中。
主存获取原始图像的所有信息,包括指针变量pixels中的原始图像像素、原始图像高度height、原始图像宽度width等。原始图像像素存储于指针变量pexels中,原始图像像素的排布方式为:前三个数据为第一个像素的信息,其中第一个数据为原始图像像素的红色通道值R,第二个数据为原始图像像素的绿色通道值G,第三个数据为原始图像像素的蓝色通道值B,之后的数据以此类推。
主存使用变量名gray申请了一个大小为header.width*header.height的内存空间,用于存储原始图像像素的灰度值。
主存将这些信息打包为一个名为calc_Histogram_Equalization_data的结构体,并定义一个数据类型为calc_Histogram_Equalization_data的变量。具体来说,该结构体包含:指向原始图像像素的指针pixels、原始图像宽度width、原始图像高度height以及指向原始图像像素的灰度值的指针gray。
步骤S2包括以下分步骤:
S21、主存利用运行函数控制从核进入快速工作模式。
具体地,主存通过利用运行函数athread_enter64_arg(),控制从核进入快速工作模式。
S22、主存利用传输函数将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核。
具体地,主存利用加速线程任务执行函数athread_spawn64_arg()将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核。
S3、计算步骤S1中均衡像素范围内的原始图像像素的灰度值,将灰度值储存在灰度值缓存区。
在本发明的一个可选实施例中,本发明计算步骤S1中均衡像素范围内的原始图像像素的灰度值后,将灰度值储存在数据缓存模块中的灰度值缓存区。
具体地,本发明在每个从核的LDM中创建灰度值缓存区local_gray,用于储存均衡像素范围内的原始图像像素的灰度值。灰度值缓存区local_gray的大小为MAX_PUT_PIXEL,记为灰度值缓存区最大值。因为LDM是有限的,无法储存均衡像素范围内的原始图像像素的灰度值,因此设置灰度值缓存区,重复利用,从而进行迭代DMA(Direct Memory Access),将从核负责均衡像素范围内的原始图像像素的灰度值数据全部储存在主存的灰度值master_gray数组中。
本发明采用迭代DMA的方法,可以使每个从核计算出的灰度值,都可以储存于灰度值缓存区,即从核本地LDM之中,一定程度上实现了LDM空间的手动虚拟化(LDM空间本身很小,无法储存每个从核负责的灰度值,但是通过DMA迭代传输和重复利用缓存区起到了扩充LDM的效果,进而能够储存更多灰度值或者映射数据)。
步骤S3包括以下分步骤:
S31、计算步骤S1中均衡像素范围的原始图像像素的灰度值,表示为:
gray=0.299*R+0.587*G+0.114*B
其中:gray为灰度值,即指向原始图像像素的灰度值的指针,R为原始图像像素的红色通道值,G为原始图像像素的绿色通道值,B为原始图像像素的蓝色通道值。
具体地,本发明使用数据传输模块,将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核,主存获取原始图像的所有信息,包括指针变量pixels中的原始图像像素、原始图像高度height、原始图像宽度width等。原始图像像素存储于指针变量pexels中,原始图像像素的排布方式为:前三个数据为第一个像素的信息,其中第一个数据为原始图像像素的红色通道值R,第二个数据为原始图像像素的绿色通道值G,第三个数据为原始图像像素的蓝色通道值B。
本发明根据原始图像像素中的红色通道值R、绿色通道值G和蓝色通道值B,计算原始图像像素的灰度值。
S32、将分步骤S31中的灰度值存储在灰度值缓存区,并将灰度值乘以偏移值进行偏移。
本发明对于当前处理的灰度值local_gray[count_for_put],每个灰度值都有64个相邻的副本,将其乘以偏移值,即乘以64作为偏移。
S33、将分步骤S32偏移后的灰度值加上从核编号作为下标。
具体地,本发明对于当前处理的灰度值local_gray[count_for_put],加上从核编号_PEN作为下标。
S34、将分步骤S33中加上下标的灰度值储存在灰度值缓存区。
S4、利用DMA将步骤S3中灰度值缓存区中的灰度值交替同步传输到主存。
在本发明的一个可选实施例中,本发明通过数据传输模块,利用DMA将灰度值缓存区的灰度值传输到主存。此过程中,本发明通过数据迭代传输模块,控制从核交替同步进行数据计算和数据传输,由于LDM空间有限,需要重复利用灰度值缓存区,因此数据计算和数据传输交替同步进行。
具体地,从核计算原始图像像素的灰度值时,将灰度值同步储存在灰度值缓存区,当灰度值缓存区数据装满时,利用DMA将灰度值缓存区中的灰度值传输至主存,然后进行下一次数据计算与数据传输,交替进行。本发明利用DMA将灰度值从LDM空间中的灰度值缓存区传输到主存,如图2所示。
步骤S4包括以下分步骤:
S41、创建传输变量,并根据计算的原始图像像素的灰度值更新传输变量。
具体地,本发明创建传输变量count_for_put。传输变量count_for_put初始值设为0,本发明根据计算的原始图像像素的灰度值更新传输变量。具体地,本发明每计算完一个原始图像像素的灰度值,就将变量count_for_put加1进行更新。
S42、根据分步骤S41中的传输变量确定步骤S3中灰度值缓存区中的灰度值数量。
本发明根据分步骤S41中的传输变量确定步骤S3中灰度值缓存区中的灰度值数量,使传输变量count_for_put用来判断灰度值缓存区local_gray中的灰度值数据是否装满。
S43、判断分步骤S42中灰度值缓存区中的灰度值数量是否小于灰度值缓存区最大值;若是则跳转到分步骤S41,否则进入分步骤S44。
具体地,若灰度值缓存区local_gray中的数据已满,即当传输变量count_for_put的值达到了灰度值缓存区最大值MAX_PUT_PIXEL时,则进入分步骤S44。
此过程由于从核负责计算的原始图像像素的数量不一定总是灰度值缓存区最大值MAX_PUT_PIXEL的整数倍,会存在一些冗余的原始图像像素的灰度值没有通过DMA传输到主存。这些冗余的原始图像像素的灰度值存储在每个从核的灰度值缓存区local_gray。同时,需要记录这些冗余的原始图像像素的灰度值的首索引extra_pixel_begin、尾索引extra_pixel_end和冗余总数extra_nums。
S44、利用DMA将灰度值缓存区中的灰度值交替同步传输到主存。
具体地,本发明通过数据传输模块和数据迭代传输模块,利用DMA将灰度值缓存区中的灰度值交替同步传输到主存,以实现迭代DMA数据传输的便利性。同时,记录下一次传输变量count_for_put操作的起始像素索引,将传输变量count_for_put重新设置为0,以便开始下一次的灰度值储存与传输。
S5、在多从核灰度直方图共享区对步骤S3中的灰度值进行累加计算,并对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
在本发明的一个可选实施例中,本发明在从核LDM空间中的多从核灰度直方图共享区share_histogram对步骤S3中的灰度值进行累加计算,并对从核列阵进行全同步,保证了所有从核在利用多从核灰度直方图共享区累加计算完成后再确定累加结果,然后将累加结果储存到共享灰度直方图共享区。
具体地,本发明在从核列阵的共享LDM中,创建多从核灰度直方图共享区share_histogram,大小为64*256,表示64个从核负责计算均衡像素范围内的原始图像像素的灰度值。其中,64表示灰度值区间数量,即64个从核负责计算的原始图像像素的均衡像素范围,256表示每个区间的大小,即从核计算的原始图像像素的灰度值的最大值。本发明在从核列阵共享LDM中创建共享灰度直方图共享区share_final_histogram,大小为256,用于储存累加结果,即图像像素总数的灰度值直方图。
步骤S5包括以下分步骤:
S51、确定所需处理的灰度级总数。
具体地,本发明中所需处理的灰度级总数为256。
S52、根据从核编号和分步骤S51中的灰度级总数,确定从核所需处理的灰度级。
具体地,每个从核根据从核编号_PEN确定所需处理的256个灰度级中的4个相邻的灰度级,即将灰度级总数256除以从核总数64,得到每个从核需要处理4个灰度级。本发明中每个从核处理4个相邻的灰度级,根据从核编号确定具体需要处理的灰度级,如从核编号_PEN为0的从核处理灰度级1~灰度级4,从核编号_PEN为1的从核处理灰度级5~灰度级8。
S53、采用循环遍历对分步骤S52中所需处理的灰度级进行累加计算。
步骤S53包括以下分步骤:
S531、确定内层循环遍历范围。
具体地,本发明在内层循环中确定内层循环遍历k的范围,k的范围为[j*64,(j+1)*64),表示64个从核共同处理所需处理的灰度级总数。
S532、确定外层循环遍历范围。
具体地,本发明确定外层循环遍历j的范围,其中j的范围为[_PEN*4,(_PEN+1)*4),表示每个从核处理的4个相邻的灰度级。
S533、根据分步骤S531中的内层循环遍历范围和分步骤S532中的外层循环遍历范围,采用循环遍历对分步骤S52中所需处理的灰度级进行累加。
具体地,本发明采用循环遍历对分步骤S52中所需处理的灰度级进行累加。在每次循环遍历中,本发明根据内层循环遍历范围和外层循环遍历范围,采用循环遍历,每个从核累加计算其所需处理的4个灰度级的具体值,并对所有从核,即64个从核计算的结果进行合并,获得总共256个灰度级中每个灰度级的具体值。在累加过程中,本发明根据下标即从核编号更新灰度值的累加情况。
S54、对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
步骤S54包括以下分步骤:
S541、对每个从核设置全同步函数。
S542、根据分步骤S541中的全同步函数控制提前完成计算任务的从核执行等待指令以完成从核列阵全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
具体地,本发明在采用循环遍历对所需处理的灰度级进行累加,通过从核列阵同步模块对从核列阵进行全同步,确保等待所有从核都完成累加计算之后,再确定最终的累加结果,保证了累加结果的准确性。
S6、根据步骤S5中共享灰度直方图共享区的累加结果确定映射函数。
在本发明的一个可选实施例中,本发明中根据共享灰度直方图共享区的累加结果,计算累积灰度分布直方图,即原始图像像素的灰度值出现次数的累加和,并根据累积灰度分布直方图计算映射函数。
具体地,若共享灰度直方图共享区值为{1,2,3,4,5},则计算得到的累积灰度分布直方图为{1,3,6,10,15},是一个分布函数,第i项是对前面i项的累加和。每个从核在LDM空间中创建一个大小为256的累积灰度分布直方图数组cumulative_histogram,用于储存原始图像像素的灰度值出现次数的累加和。并且每个从核在LDM空间中创建一个大小为256的映射函数数组mapping,用于存储映射函数,即原始图像像素的灰度值与对应的映射值之间的关系。每个从核都有一个映射函数副本。
该步骤中每个从核都同样地计算了一次累积灰度分布直方图与映射函数,并且都储存在了本地LDM中,该步骤的计算量不随数据规模的变化而变化,且耗时稳定在0.4ms,如果将此步骤进行并行化,即将计算的数据进行划分然后分给不同的从核计算,通信开销与同步成本将远大于0.4ms。
步骤S6包括以下分步骤:
S61、根据步骤S5中共享灰度直方图共享区的累加结果,计算累积灰度分布直方图。
S62、确定缩放比例参数,表示为:
alpha=255.0/(height*width)
其中:alpha为缩放比例参数,height为原始图像高度,width为原始图像宽度。
具体地,本发明通过确定缩放比例参数alpha,用来控制灰度值的缩放比例,从而将计算结果限制在0到255之间。
S63、将分步骤S61中的累积灰度分布直方图乘以分步骤S62中的缩放比例参数,对累积灰度分布直方图进行缩放。
具体地,本发明需要对累积灰度分布直方图进行缩放。对于累积灰度分布直方图数组cumulative_histogram[i],将其乘以分步骤S62中的缩放比例参数alpha已到达缩放的效果。
S64、将分步骤S63中缩放后的累积灰度分布直方图进行取整,得到映射函数。
具体地,本发明将分步骤S63中缩放后的累积灰度分布直方图再加上0.5进行四舍五入,避免取整时产生的误差,达到准确的取整效果,从而得到更加准确的映射结果。
S7、利用步骤S6中的映射函数将步骤S4中传输到主存的灰度值进行映射,并将映射后的灰度值储存在映射数据缓存区。
在本发明的一个可选实施例中,本发明利用映射函数将传输到主存的灰度值进行映射,并将映射后的灰度值储存在数据缓存模块中的映射数据缓存区。
具体地,本发明在在每一次循环中,对于每个像素索引pixel_index,计算灰度值缓存区local_gray内部像素偏移索引shift_pixel_index,以及图像数据偏移量inner_pixel,因为像素的索引不直接等于灰度值缓存区的索引,需计算进行映射一下,表示为:
inner_pixel=shift_pixel_index*3,
shift_pixel_index=pixel_index-extra_pixel_begin
其中:extra_pixel_begin为冗余像素的灰度值起始位置。
并利用cache读取到步骤S4中传输到主存的灰度值,结合每个从核的映射函数mapping将步骤S4中传输到主存的灰度值进行映射,得到映射后的灰度值,并将映射后的灰度值存储到映射数据缓存区local_elements中。
此过程中每个从核创建了一个映射数据缓存区local_elements。映射数据缓存区local_elements的空间大小为灰度值缓存区最大值MAX_PUT_PIXEL的3倍,用于存放每个从核映射后的灰度值。
S8、利用DMA将步骤S7中映射数据缓存区中的灰度值交替同步传输到主存。
在本发明的一个可选实施例中,本发明通过数据传输模块,利用DMA将映射数据缓存区映射后的灰度值传输到主存。本发明利用DMA将灰度值从LDM空间中的映射数据缓存区传输到主存,如图2所示。此过程中,本发明通过数据迭代传输模块,控制从核交替同步进行数据计算和数据传输,由于LDM空间有限,需要重复利用映射数据缓存区,因此数据计算和数据传输交替同步进行。
具体地,本发明将传输变量count_for_put的值置为0,并将传输起始位置begin_put_pixel_index的值修改为当前的传输变量count_for_put加上之前的传输起始位置begin_put_pixel_index,以便后续的迭代传输操作。每个从核的映射函数mapping将步骤S4中传输到主存的灰度值进行映射计算,每计算完一个像素并将其储存在映射数据缓存区,就将传输变量count_for_put加1。当映射数据缓存区中的数据装满时,即当变量count_for_put等于灰度值缓存区最大值MAX_PUT_PIXEL时,利用DMA将映射数据缓存区中的灰度值传输至主存,然后进行下一次数据计算与数据传输,交替进行。
对于每个从核而言,冗余原始图像像素的灰度值区间为[extra_pixel_begin,extra_pixel_end)。对于每个像素索引pixel_index,计算灰度值缓存区local_gray内部像素偏移索引shift_pixel_index,以及图像数据偏移量inner_pixel。根据映射关系计算出映射之后的灰度值,并将其存储在映射数据缓存区local_elements中。对于每个像素,根据主存中储存的灰度值,结合每个从核的映射函数mapping,计算出映射之后的灰度值,并将结果储存在映射数据缓存区local_elements中相应位置。然后将映射数据缓存区local_elements中冗余的数据通过DMA技术传输到主存中。
如图3所示,一种应用上述方法的基于直方图均衡优化算法的图像处理系统,包括数据划分模块、数据传输模块、数据缓存模块、数据共享储存模块、从核列阵同步模块和数据迭代传输模块,具体如下:
数据划分模块,用于根据从核编号和图像像素总数划分从核所需处理的原始图像像素的均衡像素范围。
在本发明的一个可选实施例中,本发明通过数据划分模块,可以根据从核编号和图像像素总数划分从核所需处理的原始图像像素的均衡像素范围,即每个从核需要处理像素的最小数量,记为num_pixel_per_slave。
具体地,本发明根据从核编号可以确定从核的总数量,并使用图像像素总数除以从核的总数量,然后将num_pixel_per_slave乘以从核编号_PEN,得到当前从核需要处理的起始像素位置,记为begin_pixel。同样地,可以将num_pixel_per_slave乘以(_PEN+1),得到当前从核需要处理的结束像素位置,记为end_pixel。最后,对于63号从核,由于存在像素总数不能被从核数量整除的情况,需要将end_pixel设置为图像像素总数。
数据传输模块,用于将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核,并利用DMA将灰度值缓存区的灰度值和映射数据缓存区的灰度值传输到主存。
在本发明的一个可选实施例中,本发明使用数据传输模块,将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核。主存获取原始图像的所有信息,包括指针变量pixels中的原始图像像素、图像高度height、图像宽度width等。原始图像像素存储于指针变量pexels中,原始图像像素的排布方式为:前三个数据为第一个像素的信息,其中第一个数据为原始图像像素的红色通道值R,第二个数据为原始图像像素的绿色通道值G,第三个数据为原始图像像素的蓝色通道值B,之后的数据以此类推。
主存将这些信息打包为一个名为calc_Histogram_Equalization_data的结构体,并定义一个数据类型为calc_Histogram_Equalization_data的变量。具体来说,该结构体包含:指向原始图像像素的指针pixels、图像宽度width、图像高度height以及指向原始图像像素的灰度值的指针gray。
主存通过利用运行函数athread_enter64_arg(),进入满核组快速工作模式,并利用加速线程任务执行函数athread_spawn64_arg()将上述结构体作为参数传输给从核。
本发明通过数据传输模块,利用DMA将灰度值缓存区的灰度值传输到主存中。当变量count_for_put等于灰度值缓存区最大值MAX_PUT_PIXEL时,本发明通过数据传输模块,利用DMA将灰度值缓存区的灰度值传输到主存中。
本发明通过数据传输模块,根据DMA将映射数据缓存区映射后的灰度值传输到主存。当变量count_for_put等于灰度值缓存区最大值MAX_PUT_PIXEL时,本发明通过数据传输模块,利用DMA将映射之后的灰度值传输到主存中。此外本发明通过数据传输模块将映射数据缓存区local_elements中冗余的数据通过DMA技术传输到主存中。
数据迭代传输模块,用于控制从核交替同步进行数据计算和数据传输。
在本发明的一个可选实施例中,由于LDM空间有限,需要重复利用缓存区,因此本发明设计数据迭代传输模块控制数据计算和数据传输需要交替同步进行。
每个从核在计算均衡像素范围内的原始图像像素的灰度值时,数据迭代传输模块将灰度值储存在灰度值缓存区,当灰度值缓存区数据装满时,将灰度值交替同步传输至主存。
具体地,从核计算原始图像像素的灰度值时,每计算完一个像素并将其储存在灰度值缓存区,就将传输变量count_for_put加1。当灰度值缓存区数据装满时,利用DMA将灰度值缓存区中的灰度值传输至主存,然后进行下一次数据计算与数据传输,交替进行。
每个从核利用步骤S7中的映射函数将步骤S4中传输到主存的灰度值进行映射时,将映射后的灰度值储存在映射数据缓存区,当映射数据缓存区中映射后的灰度值数据装满时,将映射后的灰度值交替同步传输至主存。
具体的,每个从核的映射函数mapping将步骤S4中传输到主存的灰度值进行映射计算,每计算完一个像素并将其储存在映射数据缓存区,就将传输变量count_for_put加1。当映射数据缓存区中的数据装满时,即当变量count_for_put等于灰度值缓存区最大值MAX_PUT_PIXEL时,利用DMA将映射数据缓存区中的灰度值传输至主存,然后进行下一次数据计算与数据传输,交替进行。
数据缓存模块,包括灰度值缓存区和映射数据缓存区;灰度值缓存区用于缓存每个从核计算的灰度值,映射数据缓存区用于缓存利用映射函数进行映射后得到的灰度值。
在本发明的一个可选实施例中,本发明计算步骤S1中均衡像素范围内的原始图像像素的灰度值后,将灰度值储存在数据缓存模块中的灰度值缓存区。
具体地,本发明在每个从核的LDM中创建灰度值缓存区local_gray,用于储存均衡像素范围内的原始图像像素的灰度值。灰度值缓存区local_gray的大小为MAX_PUT_PIXEL,记为灰度值缓存区最大值。因为LDM是有限的,无法储存均衡像素范围内的原始图像像素的灰度值,因此设置灰度值缓存区,重复利用,从而进行迭代DMA,将从核负责均衡像素范围内的原始图像像素的灰度值数据全部储存在主存的gray数组中。
本发明利用映射函数将传输到主存的灰度值进行映射,并将映射后的灰度值储存在数据缓存模块中的映射数据缓存区。
具体地,本发明在每个从核创建了一个映射数据缓存区local_elements。映射数据缓存区local_elements的空间大小为灰度值缓存区最大值MAX_PUT_PIXEL的3倍,用于存放每个从核映射后的灰度值。
将变量count_for_put的值置为0,以便后续的迭代PUT操作。在每一次循环中,首先计算像素索引pixel_index和循环内部索引偏移量inner_pixel,然后将循环内部索引偏移量inner_pixel乘以3转换成图像数据偏移量,接着利用cache读取到传输到主存的灰度值,结合每个从核的映射函数数组mapping,计算出映射后的灰度值,并将映射后的灰度值存储到映射数据缓存区local_elements中。
数据共享储存模块,包括多从核灰度直方图共享区和共享灰度直方图共享区;多从核灰度直方图共享区用于对灰度值进行累加计算,共享灰度直方图共享区用于储存多从核灰度直方图共享区的累加结果。
在本发明的一个可选实施例中,本发明计算步骤S1中均衡像素范围内的原始图像像素的灰度值后,在数据共享储存模块中的多从核灰度直方图共享区对灰度值进行累加计算,并将多从核灰度直方图共享区的累加结果储存到数据共享储存模块中的共享灰度直方图共享区。
具体地,本发明在从核列阵的共享LDM中,创建多从核灰度直方图共享区share_histogram,大小为64*256,表示64个从核负责计算均衡像素范围内的原始图像像素的灰度值。其中,64表示灰度值区间数量,即64个从核负责计算的原始图像像素的均衡像素范围,256表示每个区间的大小,即从核计算的原始图像像素的灰度值的最大值。本发明在从核列阵共享LDM中创建共享灰度直方图共享区share_final_histogram,大小为256,用于储存累加结果,即图像像素总数的灰度值直方图。
多从核灰度直方图共享区share_histogram中每个从核根据从核编号_PEN负责处理256个灰度级中的4个相邻的灰度级,然后进行累加,并将累加的结果存储在共享灰度直方图共享区share_final_histogram。
从核列阵同步模块,用于根据从核列阵全同步法校正共享灰度直方图共享区的累加结果。
在本发明的一个可选实施例中,本发明在采用循环遍历对所需处理的灰度级进行累加,得到累加结果后,通过从核列阵同步模块对从核列阵进行全同步,确保等待所有从核都完成累加计算之后,再确定最终的累加结果,保证了累加结果的准确性。
本发明在采用循环遍历对所需处理的灰度级进行累加,通过从核列阵同步模块对从核列阵进行全同步,确保等待所有从核都完成累加计算之后,再确定最终的累加结果,保证了累加结果的准确性。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (10)
1.一种基于直方图均衡优化算法的图像处理方法,其特征在于,包括以下步骤:
S1、根据从核编号和图像像素总数确定从核所需处理的原始图像像素的均衡像素范围;
S2、主存将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核;
S3、计算步骤S1中均衡像素范围内的原始图像像素的灰度值,将灰度值储存在灰度值缓存区;
S4、利用DMA将步骤S3中灰度值缓存区中的灰度值交替同步传输到主存;
S5、在多从核灰度直方图共享区对步骤S3中的灰度值进行累加计算,并对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区;
S6、根据步骤S5中共享灰度直方图共享区的累加结果确定映射函数;
S7、利用步骤S6中的映射函数将步骤S4中传输到主存的灰度值进行映射,并将映射后的灰度值储存在映射数据缓存区;
S8、利用DMA将步骤S7中映射数据缓存区中的灰度值交替同步传输到主存。
2.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S1包括以下分步骤:
S11、根据从核编号确定总从核数;
S12、将图像像素总数除以分步骤S11中的总从核数,得到单个从核处理图像像素数;
S13、根据从核编号和分步骤S12中的单个从核处理图像像素数,确定从核所需处理的原始图像像素的均衡像素范围。
3.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S2包括以下分步骤:
S21、主存利用运行函数控制从核进入快速工作模式;
S22、主存利用加速线程任务执行函数将步骤S1确定的从核所需处理的均衡像素范围内的原始图像像素传输给从核。
4.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S3包括以下分步骤:
S31、计算步骤S1中均衡像素范围的原始图像像素的灰度值,表示为:
gray=0.299*R+0.587*G+0.114*B
其中:gray为灰度值,R为原始图像像素的红色通道值,G为原始图像像素的绿色通道值,B为原始图像像素的蓝色通道值;
S32、将分步骤S31中的灰度值存储在灰度值缓存区,并将灰度值乘以偏移值进行偏移;
S33、将分步骤S32偏移后的灰度值加上从核编号作为下标;
S34、将分步骤S33中加上下标的灰度值储存在灰度值缓存区。
5.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S4包括以下分步骤:
S41、创建传输变量,并根据计算的原始图像像素的灰度值更新传输变量;
S42、根据分步骤S41中的传输变量确定步骤S3中灰度值缓存区中的灰度值数量;
S43、判断分步骤S42中灰度值缓存区中的灰度值数量是否小于灰度值缓存区最大值;若是则跳转到分步骤S41,否则进入分步骤S44;
S44、利用DMA将灰度值缓存区中的灰度值交替同步传输到主存。
6.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S5包括以下分步骤:
S51、确定所需处理的灰度级总数;
S52、根据从核编号和分步骤S51中的灰度级总数,确定从核所需处理的灰度级;
S53、采用循环遍历对分步骤S52中所需处理的灰度级进行累加计算;
S54、对从核列阵进行全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
7.根据权利要求6所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S53包括以下分步骤:
S531、确定外层循环遍历范围;
S532、确定内层循环遍历范围;
S533、根据分步骤S531中的外层循环遍历范围和分步骤S532中的内层循环遍历范围,采用循环遍历对分步骤S52中所需处理的灰度级进行累加。
8.根据权利要求6所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S54包括以下分步骤:
S541、对每个从核设置全同步函数;
S542、根据分步骤S541中的全同步函数控制提前完成计算任务的从核执行等待指令以完成从核列阵全同步,得到累加结果并将累加结果储存到共享灰度直方图共享区。
9.根据权利要求1所述的一种基于直方图均衡优化算法的图像处理方法,其特征在于,步骤S6包括以下分步骤:
S61、根据步骤S5中共享灰度直方图共享区的累加结果,计算累积灰度分布直方图;
S62、确定缩放比例参数,表示为:
alpha=255.0/(height*width)
其中:alpha为缩放比例参数,height为原始图像高度,width为原始图像宽度;
S63、将分步骤S61中的累积灰度分布直方图乘以分步骤S62中的缩放比例参数,对累积灰度分布直方图进行缩放;
S64、将分步骤S63中缩放后的累积灰度分布直方图进行取整,得到映射函数。
10.一种应用权利要求1-9任一所述方法的基于直方图均衡优化算法的图像处理系统,其特征在于,包括:
数据划分模块,用于根据从核编号和图像像素总数划分从核所需处理的原始图像像素的均衡像素范围;
数据传输模块,用于将主存中从核所需处理的均衡像素范围内的原始图像像素传输给每个从核,并利用DMA将灰度值缓存区的灰度值和映射数据缓存区的灰度值传输到主存;
数据迭代传输模块,用于控制从核交替同步进行数据计算和数据传输;
数据缓存模块,包括灰度值缓存区和映射数据缓存区;灰度值缓存区用于缓存每个从核计算的灰度值,映射数据缓存区用于缓存利用映射函数进行映射后得到的灰度值;
数据共享储存模块,包括多从核灰度直方图共享区和共享灰度直方图共享区;多从核灰度直方图共享区用于对灰度值进行累加计算,共享灰度直方图共享区用于储存多从核灰度直方图共享区的累加结果;
从核列阵同步模块,用于对从核列阵进行全同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310462081.6A CN116485691B (zh) | 2023-04-25 | 2023-04-25 | 一种基于直方图均衡优化算法的图像处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310462081.6A CN116485691B (zh) | 2023-04-25 | 2023-04-25 | 一种基于直方图均衡优化算法的图像处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116485691A CN116485691A (zh) | 2023-07-25 |
CN116485691B true CN116485691B (zh) | 2024-01-26 |
Family
ID=87215306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310462081.6A Active CN116485691B (zh) | 2023-04-25 | 2023-04-25 | 一种基于直方图均衡优化算法的图像处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116485691B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117934532B (zh) * | 2024-03-22 | 2024-06-04 | 西南石油大学 | 一种图像边缘检测并行优化方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035578A (zh) * | 2020-11-06 | 2020-12-04 | 北京谷数科技股份有限公司 | 基于众核处理器的数据并行处理方法及装置 |
CN113012023A (zh) * | 2021-02-22 | 2021-06-22 | 中国科学技术大学 | 基于众核处理器的视频分析加速方法及系统 |
CN114968600A (zh) * | 2022-07-19 | 2022-08-30 | 山东省计算中心(国家超级计算济南中心) | 一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818553B (zh) * | 2016-09-12 | 2020-04-07 | 京东方科技集团股份有限公司 | 图像灰度值调整方法和装置 |
-
2023
- 2023-04-25 CN CN202310462081.6A patent/CN116485691B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035578A (zh) * | 2020-11-06 | 2020-12-04 | 北京谷数科技股份有限公司 | 基于众核处理器的数据并行处理方法及装置 |
CN113012023A (zh) * | 2021-02-22 | 2021-06-22 | 中国科学技术大学 | 基于众核处理器的视频分析加速方法及系统 |
CN114968600A (zh) * | 2022-07-19 | 2022-08-30 | 山东省计算中心(国家超级计算济南中心) | 一种基于新一代申威众核处理器的从核阵列任务分配实现负载均衡的方法 |
Non-Patent Citations (1)
Title |
---|
基于新一代申威众核处理器的BLAS并行优化的研究;徐燚;中国优秀硕士学位论文全文数据库 信息科技辑;I137-93 * |
Also Published As
Publication number | Publication date |
---|---|
CN116485691A (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210201124A1 (en) | Systems and methods for neural network convolutional layer matrix multiplication using cache memory | |
CN111078395B (zh) | 一种基于张量的深度学习gpu内存管理优化方法及系统 | |
CN116485691B (zh) | 一种基于直方图均衡优化算法的图像处理方法及系统 | |
US20190220731A1 (en) | Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system | |
KR20220147732A (ko) | 인공 신경망에서의 분산 및 협력 계산을 위한 방법 및 장치 | |
CN110942138B (zh) | 一种混合内存环境下深度神经网络的训练方法和系统 | |
CN110852428A (zh) | 基于fpga的神经网络加速方法和加速器 | |
CN112465110A (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
CN114528042A (zh) | 基于深度强化学习的节能型自动互联车辆服务卸载方法 | |
CN101267565A (zh) | 一种视频编码中运动矢量搜索方法及装置 | |
US20190196887A1 (en) | Processor circuit, information processing apparatus, and operation method of processor circuit | |
WO2016024508A1 (ja) | マルチプロセッサ装置 | |
JP7370158B2 (ja) | 情報処理装置および情報処理方法 | |
CN115860080A (zh) | 计算核、加速器、计算方法、装置、设备、介质及系统 | |
CN114254740B (zh) | 卷积神经网络加速计算方法、计算系统、芯片及接收机 | |
CN110188066B (zh) | 一种针对大容量数据的FPGA和基于opencl的FPGA算法 | |
CN114742214A (zh) | 一种神经网络的高速缓存方法、系统、装置及存储介质 | |
CN113138748A (zh) | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 | |
CN111340224A (zh) | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 | |
US8601238B2 (en) | Arithmetic processing apparatus, arithmetic processing system, and arithmetic processing method which utilize limitation information to perform enhanced arithmetic processing | |
CN101452572A (zh) | 基于三次平移算法的图像旋转vlsi结构 | |
CN113177877B (zh) | 一种面向slam后端优化的舒尔消除加速器 | |
US11886973B2 (en) | Neural processing unit including variable internal memory | |
WO2023092669A1 (zh) | 一种基于脉动阵列的多精度加速器及其数据处理方法 | |
US20220147280A1 (en) | Efficient buffering technique for transferring data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |