<p>The quality of images captured in challenging environmental conditions, such as nighttime or low illumination, is often compromised. Low-light images captured in non-uniform illumination environments contain a compressed dynamic range that can be improved to expose more detail and information. Many enhancement algorithms exist for low-light or dark images, but some are computationally intensive, making them difficult to use in real-time scenarios. Unsharp masking is a popular algorithm that enhances details and edges in images. For example, an algorithm incorporates local and global enhancements, including color space conversions from RGB to HSV and back, unsharp masking, and histogram equalization. However, runtime profiling revealed that unsharp masking is computationally expensive, taking up to 75% of the runtime. To address this issue, the unsharp masking steps were implemented on GPU hardware using a straightforward method, with each thread computing a single output to leverage its parallelization power. Subsequently, we analyzed the runtime and identified optimal optimization combinations that leverage shared memory, registers, and changing thread workloads to enhance communication efficiency within the GPU. For a filter size <InlineEquation ID="IEq1"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="11227_2025_7447_Article_IEq1.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="39" /> </InlineMediaObject> <EquationSource Format="TEX">\(5\times 5\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mn>5</mn> <mo>×</mo> <mn>5</mn> </mrow> </math></EquationSource> </InlineEquation>, our experimental results showed a speedup of up to <InlineEquation ID="IEq2"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="11227_2025_7447_Article_IEq2.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="54" /> </InlineMediaObject> <EquationSource Format="TEX">\(16.36\times\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mn>16.36</mn> <mo>×</mo> </mrow> </math></EquationSource> </InlineEquation> at the kernel level and <InlineEquation ID="IEq3"> <InlineMediaObject> <ImageObject Color="BlackWhite" FileRef="11227_2025_7447_Article_IEq3.gif" Format="GIF" Height="14" Rendition="HTML" Resolution="72" Type="Linedraw" Width="38" /> </InlineMediaObject> <EquationSource Format="TEX">\(3.5\times\)</EquationSource> <EquationSource Format="MATHML"><math> <mrow> <mn>3.5</mn> <mo>×</mo> </mrow> </math></EquationSource> </InlineEquation> at the application level using GPU optimization techniques compared to the CPU platform.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

GPU optimizations to accelerate an image enhancement algorithm

  • Amin Daemdoost,
  • Asadollah Shahbahrami,
  • Hesam Noorpoor,
  • Nima Esmi,
  • Reza Hassanpour

摘要

The quality of images captured in challenging environmental conditions, such as nighttime or low illumination, is often compromised. Low-light images captured in non-uniform illumination environments contain a compressed dynamic range that can be improved to expose more detail and information. Many enhancement algorithms exist for low-light or dark images, but some are computationally intensive, making them difficult to use in real-time scenarios. Unsharp masking is a popular algorithm that enhances details and edges in images. For example, an algorithm incorporates local and global enhancements, including color space conversions from RGB to HSV and back, unsharp masking, and histogram equalization. However, runtime profiling revealed that unsharp masking is computationally expensive, taking up to 75% of the runtime. To address this issue, the unsharp masking steps were implemented on GPU hardware using a straightforward method, with each thread computing a single output to leverage its parallelization power. Subsequently, we analyzed the runtime and identified optimal optimization combinations that leverage shared memory, registers, and changing thread workloads to enhance communication efficiency within the GPU. For a filter size \(5\times 5\) 5 × 5 , our experimental results showed a speedup of up to \(16.36\times\) 16.36 × at the kernel level and \(3.5\times\) 3.5 × at the application level using GPU optimization techniques compared to the CPU platform.