Design and Implementation of a Generic Image Reconstruction Pipeline for Camera Phones
Määttä, Joni-Matti (2013)
Määttä, Joni-Matti
2013
Tietotekniikan koulutusohjelma
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2013-06-05
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201306141228
https://urn.fi/URN:NBN:fi:tty-201306141228
Tiivistelmä
Valtaosa nykyisistä edullisen hintaluokan matkapuhelimista sisältää kameran, joka käyttää yksinkertaista optiikkaa ja halpaa kamerasensoria. Riittävän kuvanlaadun takaamiseksi kuvaa käsitellään kuvankäsittelyalgoritmeilla, jotka yhdessä muodostavat kuvankäsittelyliukuhihnan. Paras suorituskyky saavutetaan yleensä rautapohjaisella liukuhihnalla. Ohjelmistopohjaisia ratkaisuja voidaan kuitenkin suosia tuotantokustannusten minimoimiseksi ja liukuhihnan joustavuuden sekä laajennettavuuden parantamiseksi. Jotta liukuhihnan muistinkulutus voidaan minimoida vähämuistisessa ympäristössä, on järkevää toteuttaa ohjelmistopohjainen kuvankäsittelyliukuhihna käyttäen juovapuskureita. Juovapuskurit monimutkaistavat liukuhihnan hallintaa, mikä kuitenkin on ratkaistavissa automaation avulla.
Tämä diplomityö esittelee yleiskäyttöisen ohjelmistokehyksen juovapuskuripohjaiselle kuvankäsittelyliukuhihnalle. Ohjelmistokehys soveltuu vähämuistisiin ympäristöihin ja helpottaa kuvankäsittelyalgoritmien lisäämistä, poistamista ja muuttamista sekä muita liukuhihnan hallintatehtäviä merkittävästi. Säästöt kehitysajassa voivat olla jopa kuukausia. Ohjelmistokehyksen suorituskykyä ja muistinkäyttöä verrataan nykyisiin toteutuksiin käyttäen todellista kuvankäsittelyliukuhihnaa testitapauksena. Työssä pohditaan myös, kuinka juovapuskuripohjainen liukuhihna voitaisiin rinnakkaistaa entistä paremman suorituskyvyn saavuttamiseksi moniydinpuhelimissa. Rinnakkaistetun liukuhihan toteuttamiseksi esitellään kaksi lähestymistapaa: dataviipaloitu liukuhihna ja työjonopohjainen liukuhihna.
Tutkimus osoittaa, että ohjelmistokehys säästää muistia yli 99% verrattuna perinteisiin toteutuksiin, jotka käyttävät ping-pong puskurointia täyden koon kuvapuskureilla. Toteutettu ohjelmistokehys parantaa myös suorituskykyä paremman välimuistin käytön ansiosta ja lisää kuvankäsittelyliukuhihnan joustavuutta useilla erilaisilla konfiguraatioilla. The majority of the current affordable mobile devices contain a camera with simple optics and a low-cost camera sensor. In these devices, the quality of the captured images is made acceptable with various image processing algorithms that together form an image reconstruction pipeline. The best performance is often achieved with a hardware pipeline, but software implementations can be preferred to minimize production costs and to maximize flexibility. To minimize memory consumption in such a limited-resource environment, it is reasonable to implement a software-based image reconstruction pipeline using line buffers. The line buffers complicate the management of the pipeline, which, however, can be solved by increasing development tool automatization.
This Thesis presents a generic software framework for a line-buffer-based image reconstruction pipeline. The presented framework is capable of operating in low-memory environments and significantly eases algorithm insertions, changes of processing order, and other pipeline management tasks. The savings in development time can be even months. The performance and memory usage of the software framework is compared to contemporary implementations by using a real image reconstruction pipeline as the test case. The Thesis also discusses how the line-buffer-based pipeline could be parallelized to achieve improved performance on multi-core devices. Two promising approaches are considered: slice-based parallelization and work-queue-based parallelization.
The experiments show that the software framework offers over 99% memory savings compared with traditional implementations using a ping-pong buffer scheme with full-sized image buffers. The implemented framework also enhances processing performance due to better cache usage and increases flexibility with various pipeline configurations.
Tämä diplomityö esittelee yleiskäyttöisen ohjelmistokehyksen juovapuskuripohjaiselle kuvankäsittelyliukuhihnalle. Ohjelmistokehys soveltuu vähämuistisiin ympäristöihin ja helpottaa kuvankäsittelyalgoritmien lisäämistä, poistamista ja muuttamista sekä muita liukuhihnan hallintatehtäviä merkittävästi. Säästöt kehitysajassa voivat olla jopa kuukausia. Ohjelmistokehyksen suorituskykyä ja muistinkäyttöä verrataan nykyisiin toteutuksiin käyttäen todellista kuvankäsittelyliukuhihnaa testitapauksena. Työssä pohditaan myös, kuinka juovapuskuripohjainen liukuhihna voitaisiin rinnakkaistaa entistä paremman suorituskyvyn saavuttamiseksi moniydinpuhelimissa. Rinnakkaistetun liukuhihan toteuttamiseksi esitellään kaksi lähestymistapaa: dataviipaloitu liukuhihna ja työjonopohjainen liukuhihna.
Tutkimus osoittaa, että ohjelmistokehys säästää muistia yli 99% verrattuna perinteisiin toteutuksiin, jotka käyttävät ping-pong puskurointia täyden koon kuvapuskureilla. Toteutettu ohjelmistokehys parantaa myös suorituskykyä paremman välimuistin käytön ansiosta ja lisää kuvankäsittelyliukuhihnan joustavuutta useilla erilaisilla konfiguraatioilla.
This Thesis presents a generic software framework for a line-buffer-based image reconstruction pipeline. The presented framework is capable of operating in low-memory environments and significantly eases algorithm insertions, changes of processing order, and other pipeline management tasks. The savings in development time can be even months. The performance and memory usage of the software framework is compared to contemporary implementations by using a real image reconstruction pipeline as the test case. The Thesis also discusses how the line-buffer-based pipeline could be parallelized to achieve improved performance on multi-core devices. Two promising approaches are considered: slice-based parallelization and work-queue-based parallelization.
The experiments show that the software framework offers over 99% memory savings compared with traditional implementations using a ping-pong buffer scheme with full-sized image buffers. The implemented framework also enhances processing performance due to better cache usage and increases flexibility with various pipeline configurations.