<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s90301692</article-id>
<article-id pub-id-type="publisher-id">sensors-09-01692</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Noise Reduction for CFA Image Sensors Exploiting HVS Behaviour</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Bosco</surname><given-names>Angelo</given-names></name><xref ref-type="aff" rid="af1-sensors-09-01692"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-09-01692"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Battiato</surname><given-names>Sebastiano</given-names></name><xref ref-type="aff" rid="af2-sensors-09-01692"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Bruna</surname><given-names>Arcangelo</given-names></name><xref ref-type="aff" rid="af1-sensors-09-01692"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Rizzo</surname><given-names>Rosetta</given-names></name><xref ref-type="aff" rid="af2-sensors-09-01692"><sup>2</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-09-01692">
<label>1</label> STMicroelectronics, Stradale Primosole 50, 95121 Catania, Italy; E-Mail: <email>arcangelo.bruna@st.com</email></aff>
<aff id="af2-sensors-09-01692">
<label>2</label> Università di Catania, Dipartimento di Matematica ed Informatica, Viale A. Doria 6, 95125 Catania, Italy; E-Mails: <email>battiato@dmi.unict.it</email>; <email>rosetta.rizzo@dmi.unict.it</email></aff>
<author-notes>
<corresp id="c1-sensors-09-01692">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>angelo.bosco@st.com</email></corresp></author-notes>
<pub-date pub-type="collection">
<year>2009</year></pub-date>
<pub-date pub-type="epub">
<day>10</day>
<month>3</month>
<year>2009</year></pub-date>
<volume>9</volume>
<issue>3</issue>
<fpage>1692</fpage>
<lpage>1713</lpage>
<history>
<date date-type="received">
<day>18</day>
<month>11</month>
<year>2008</year></date>
<date date-type="rev-recd">
<day>4</day>
<month>3</month>
<year>2009</year></date>
<date date-type="accepted">
<day>9</day>
<month>3</month>
<year>2009</year></date></history>
<permissions>
<copyright-statement>© 2009 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2009</copyright-year>
<license>
<p>This article is an open-access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>This paper presents a spatial noise reduction technique designed to work on <italic>CFA</italic> (Color Filtering Array) data acquired by <italic>CCD/CMOS</italic> image sensors. The overall processing preserves image details using some heuristics related to the <italic>HVS</italic> (Human Visual System); estimates of local texture degree and noise levels are computed to regulate the filter smoothing capability. Experimental results confirm the effectiveness of the proposed technique. The method is also suitable for implementation in low power mobile devices with imaging capabilities such as camera phones and <italic>PDAs</italic>.</p></abstract>
<kwd-group>
<kwd>Noise Reduction</kwd>
<kwd>Color Filter Array</kwd>
<kwd>HVS</kwd>
<kwd>Texture Detection</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>The image formation process through consumer imaging devices is intrinsically noisy. This is especially true using low-cost devices such as mobile-phones, PDAs, etc., mainly in low-light conditions and the absence of flash-guns [<xref ref-type="bibr" rid="b1-sensors-09-01692">1</xref>].</p>
<p>The final perceived quality of images acquired by digital sensors can be optimized through multi-shot acquisitions (e.g., extending dynamic range [<xref ref-type="bibr" rid="b2-sensors-09-01692">2</xref>], increasing resolution [<xref ref-type="bibr" rid="b3-sensors-09-01692">3</xref>]) and/or using <italic>ad-hoc</italic> post-processing techniques [<xref ref-type="bibr" rid="b4-sensors-09-01692">4</xref>,<xref ref-type="bibr" rid="b5-sensors-09-01692">5</xref>] taking into account the raw data acquired by Bayer matrixed image sensors [<xref ref-type="bibr" rid="b6-sensors-09-01692">6</xref>]. These are grayscale sensors covered by <italic>CFA</italic> (Color Filter Array) to enable color sensitivity, such that each cell of the sensor array is receptive to only one color component. The final color image is obtained by means of a color reconstruction (<italic>demosaicing</italic>) algorithm that combines the color information of neighboring pixels [<xref ref-type="bibr" rid="b7-sensors-09-01692">7</xref>–<xref ref-type="bibr" rid="b9-sensors-09-01692">9</xref>] and [<xref ref-type="bibr" rid="b10-sensors-09-01692">10</xref>]. A useful review of technology and methods in the field can be found in [<xref ref-type="bibr" rid="b1-sensors-09-01692">1</xref>] and [<xref ref-type="bibr" rid="b11-sensors-09-01692">11</xref>].</p>
<p>In this paper we propose a novel spatial noise reduction method that directly processes the raw <italic>CFA</italic> data, combining together <italic>HVS</italic> (Human Visual System) heuristics, texture/edges preservation techniques and sensor noise statistics, in order to obtain an effective adaptive denoising.</p>
<p>The proposed algorithm introduces the concept of the usage of <italic>HVS</italic> peculiarities directly on the <italic>CFA</italic> raw data from the sensor. In addition, the complexity of the algorithm is kept low by using only spatial information and a small fixed-size filter processing window, allowing real-time performance on low cost imaging devices (e.g., mobile phones, PDAs).</p>
<p>The <italic>HVS</italic> properties, able to characterize or isolate unpleasant artifacts, are complex (highly nonlinear) phenomena not yet completely understood involving a lot of complex parameters [<xref ref-type="bibr" rid="b12-sensors-09-01692">12</xref>,<xref ref-type="bibr" rid="b13-sensors-09-01692">13</xref>]. Several studies in the literature have tried to simulate and code some known aspects in order to find reliable image metrics [<xref ref-type="bibr" rid="b14-sensors-09-01692">14</xref>–<xref ref-type="bibr" rid="b16-sensors-09-01692">16</xref>] and heuristics to also be applied for demosaicing [<xref ref-type="bibr" rid="b17-sensors-09-01692">17</xref>].</p>
<p>Sophisticated denoising methods such as [<xref ref-type="bibr" rid="b18-sensors-09-01692">18</xref>–<xref ref-type="bibr" rid="b20-sensors-09-01692">20</xref>] perform multiresolution analysis and processing in the wavelet domain. Other techniques, as suggested in [<xref ref-type="bibr" rid="b21-sensors-09-01692">21</xref>], use anisotropic non-linear diffusion equations, but work iteratively. Spatial denoising approaches having texture discrimination capabilities can be found in [<xref ref-type="bibr" rid="b1-sensors-09-01692">1</xref>,<xref ref-type="bibr" rid="b23-sensors-09-01692">23</xref>,<xref ref-type="bibr" rid="b24-sensors-09-01692">24</xref>], whereas methods implementing texture discrimination using fuzzy logic are described in [<xref ref-type="bibr" rid="b25-sensors-09-01692">25</xref>,<xref ref-type="bibr" rid="b26-sensors-09-01692">26</xref>]. Other kinds of noise, such as <italic>fixed pattern noise</italic> (<italic>FPN</italic>) can be treated <italic>ad-hoc</italic>, in [<xref ref-type="bibr" rid="b27-sensors-09-01692">27</xref>] a method suitable is presented.</p>
<p>The proposed filtering method is a trade-off between real time implementation with very low hardware logic and the usage of some <italic>HVS</italic> peculiarities, texture and noise level estimation. The filter adapts its smoothing capability to local image characteristics yielding effective results in terms of visual quality.</p>
<p>The paper is structured as follows: in the next section some details about the <italic>CFA</italic> and <italic>HVS</italic> characteristics are briefly discussed; in Section 3 the overall details of the proposed method are presented. An experimental section reports the results and some comparisons with other related techniques. The final section tracks directions for future works.</p></sec>
<sec>
<label>2.</label>
<title>Background</title>
<sec sec-type="methods">
<label>2.1.</label>
<title>Bayer Data</title>
<p>In typical imaging devices a color filter is placed on top of the imager making each pixel sensitive to only one color component. A color reconstruction algorithm interpolates the missing information at each location and reconstructs the full <italic>RGB</italic> image [<xref ref-type="bibr" rid="b9-sensors-09-01692">9</xref>–<xref ref-type="bibr" rid="b11-sensors-09-01692">11</xref>]. The color filter selects the red, green or blue component for each pixel; this arrangement is known as Bayer pattern [<xref ref-type="bibr" rid="b6-sensors-09-01692">6</xref>]; other arrangements of <italic>CFA</italic> data take into account <italic>CMY</italic> complementary colors, but the <italic>RGB</italic> color space is the most common.</p>
<p>The number of green elements is twice the number of red and blue pixels due to the higher sensitivity of the human eye to the green light, which, in fact, has a higher weight when computing the luminance. The proposed filter processes raw Bayer data, providing the best performance if executed as the first algorithm of the IGP (Image Generation Pipeline). A typical image reconstruction pipeline is shown in <xref ref-type="fig" rid="f1-sensors-09-01692">Figure 1</xref>.</p></sec>
<sec>
<label>2.2.</label>
<title>Basic Concepts about the Human Visual System</title>
<p>It is well known that the <italic>HVS</italic> has a different sensitivity at different spatial frequencies [<xref ref-type="bibr" rid="b28-sensors-09-01692">28</xref>]. In areas containing mean frequencies the eye has a higher sensitivity. Furthermore, chrominance sensitivity is weaker than the luminance one.</p>
<p><italic>HVS</italic> response does not entirely depend on the luminance value itself, rather, it depends on the luminance local variations with respect to the background; this effect is described by the Weber-Fechner’s law [<xref ref-type="bibr" rid="b13-sensors-09-01692">13</xref>,<xref ref-type="bibr" rid="b29-sensors-09-01692">29</xref>], which determines the minimum difference <italic>DY</italic> needed to distinguish between <italic>Y</italic> (background) and <italic>Y+DY</italic>. Different values of <italic>Y</italic> yield to different values of <italic>DY</italic>.</p>
<p>The aforementioned properties of the <italic>HVS</italic> have been used as a starting point to devise a <italic>CFA</italic> filtering algorithm. Luminance from <italic>CFA</italic> data can be extracted as explained in [<xref ref-type="bibr" rid="b30-sensors-09-01692">30</xref>], but for our purposes it can be roughly approximated by the green channel values before gamma correction.</p>
<p>The filter changes its smoothing capability depending on the <italic>CFA</italic> color of the current pixel and its similarity with the neighborhood pixels.</p>
<p>More specifically, in relation to image content, the following assumptions are considered:
<list list-type="simple">
<list-item>
<p>- if the local area is homogeneous, then it can be heavily filtered because pixel variations are basically caused by random noise.</p></list-item>
<list-item>
<p>- if the local area is textured, then it must be lightly filtered because pixel variations are mainly caused by texture and by noise to a lesser extent; hence only the little differences can be safely filtered, as they are masked by the local texture.</p></list-item></list></p></sec></sec>
<sec>
<label>3.</label>
<title>The Proposed Technique</title>
<sec>
<label>3.1.</label>
<title>Overall filter block diagram</title>
<p>A block diagram describing the overall filtering process is illustrated in <xref ref-type="fig" rid="f2-sensors-09-01692">Figure 2</xref>. Each block will be separately described in detail in the following sections.</p>
<p>The fundamental blocks of the algorithm are:
<list list-type="bullet">
<list-item>
<p><bold><italic>Signal Analyzer Block</italic></bold>: computes a filter parameter incorporating the effects of human visual system response and signal intensity in the filter mask.</p></list-item>
<list-item>
<p><bold><italic>Texture Degree Analyzer</italic></bold>: determines the amount of texture in the filter mask using information from the <italic>Signal Analyzer Block.</italic></p></list-item>
<list-item>
<p><bold><italic>Noise Level Estimator</italic></bold>: estimates the noise level in the filter mask taking into account the texture degree.</p></list-item>
<list-item>
<p><bold><italic>Similarity Thresholds Block</italic></bold>: computes the fuzzy thresholds that are used to determine the weighting coefficients for the neighborhood of the central pixel.</p></list-item>
<list-item>
<p><bold><italic>Weights Computation Block</italic></bold>: uses the coefficients computed by the <italic>Similarity Thresholds Block</italic> and assigns a weight to each neighborhood pixel, representing the degree of similarity between pixel pairs.</p></list-item>
<list-item>
<p><bold><italic>Filter Block</italic></bold>: actually computes the filter output.</p></list-item></list></p>
<p>The data in the filter mask passes through the <italic>Signal Analyzer</italic> block that influences the filter strength in dark and bright regions (Section 3.2 for further details). The <italic>HVS</italic> value is used in combination with the output of the <italic>Texture Degree Analyzer</italic> (Section 3.4) and <italic>Noise Level Estimator</italic> (Section 3.5) to produce the similarity thresholds used to finally compute the weights assigned to the neighborhood of the central pixel (Section 3.6). The final filtered value is obtained by a weighted averaging process (Section 3.7).</p></sec>
<sec>
<label>3.2.</label>
<title>Signal Analyzer Block</title>
<p>As noted [<xref ref-type="bibr" rid="b31-sensors-09-01692">31</xref>–<xref ref-type="bibr" rid="b33-sensors-09-01692">33</xref>], it is possible to approximate the minimum intensity gap that is necessary for the eye to perceive a change in pixel values. The base sensitivity thresholds measure the contrast sensitivity in function of frequency while fixing the background intensity level. In general, the detection threshold varies also with the background intensity. This phenomenon is known as luminance masking or light adaptation. Higher gap in intensity is needed to perceive a visual difference in very dark areas, whereas for mid and high pixel intensities a small difference in value between adjacent pixels is more easily perceived by the eye [<xref ref-type="bibr" rid="b32-sensors-09-01692">32</xref>].</p>
<p>It also crucial to observe that in data from real image sensors, the constant <italic>AWGN (Additive White Gaussian Noise)</italic> model does not fit well the noise distribution for all pixel values. In particular, as discussed in [<xref ref-type="bibr" rid="b34-sensors-09-01692">34</xref>], the noise level in raw data is predominantly signal-dependent and increases as the signal intensity raises; hence, the noise level is higher in very bright areas. In [<xref ref-type="bibr" rid="b34-sensors-09-01692">34</xref>] and [<xref ref-type="bibr" rid="b35-sensors-09-01692">35</xref>] it is also illustrated how clipping in data is the cause of noise level underestimation; e.g., noise level for pixels close to saturation cannot be robustly tracked because the signal reaches the upper limit of the allowed bitdepth encoding.</p>
<p>We decided to incorporate the above considerations of luminance masking and sensor noise statistics into a single curve as shown in <xref ref-type="fig" rid="f3-sensors-09-01692">Figure 3</xref>. The shape of this curve allows compensating for lower eye sensitivity and increased noise power in the proper areas of the image, allowing adaptive filter smoothing capability in relation to the pixel values.</p>
<p>A high HVS value (HVSmax) is set for both low and high pixel values: in dark areas the human eye is less sensitive to variations of pixel intensities, whereas in bright areas noise standard deviation is higher. HVS value is set low (HVSmin) at mid pixel intensities.</p>
<p>As stated in Section 2.2, in order to make some simplifying assumptions, we use the same HVS curve for all CFA colour channels taking as input the pixel intensities directly from the sensor. The HVS coefficient computed by this block is used by the Texture Degree Analyzer that outputs a degree of texture taking also into account the above considerations (Section 3.4).</p></sec>
<sec>
<label>3.3.</label>
<title>Filter Masks</title>
<p>The proposed filter uses different filter masks for green and red/blue pixels to match the particular arrangement of pixels in the <italic>CFA</italic> array. The size of the filter mask depends on the resolution of the imager: at higher resolution a small processing window might be unable to capture significant details. For our processing purposes a 5×5 window size provided a good trade-off between hardware cost and image quality, allowing us to process images up to 5 megapixels, a resolution that is typical of high end mobile phones. Typical Bayer processing windows are illustrated in <xref ref-type="fig" rid="f4-sensors-09-01692">Figure 4</xref>.</p></sec>
<sec>
<label>3.4.</label>
<title>Texture Degree Analyzer</title>
<p>The texture analyzer block computes a reference value <italic>T<sub>d</sub></italic> that is representative of the local texture degree. This reference value approaches 1 as the local area becomes increasingly flat and decreases as the texture degree increases (<xref ref-type="fig" rid="f5-sensors-09-01692">Figure 5</xref>). The computed coefficient is used to regulate the filter smoothing capability so that high values of <italic>T<sub>d</sub></italic> correspond to flat image areas in which the filter strength can be increased.</p>
<p>Depending on the color of the pixel under processing, either green or red/blue, two different texture analyzers are used. The red/blue filter power is increased by slightly modifying the texture analyzer making it less sensitive to small pixel differences (<xref ref-type="fig" rid="f6-sensors-09-01692">Figure 6</xref>). The texture analyzer block output depends on a combination of the maximum difference between the central pixel and the neighborhood <italic>D<sub>max</sub></italic> and <italic>TextureThreshold</italic>, a value that is obtained by combining information from the <italic>HVS</italic> response and noise level, as described below (2).</p>
<p>The green and red/blue texture analyzers are defined as follows:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi></mml:mrow>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="italic">green</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>≤</mml:mo>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi></mml:mrow>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="italic">red</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi mathvariant="italic">blue</mml:mi></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Th</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>B</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Th</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>B</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Th</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>B</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Th</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>R</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>B</mml:mi></mml:mrow></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>≤</mml:mo>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>hence:
<list list-type="simple">
<list-item>
<p>- if <italic>T<sub>d</sub></italic> = 1 the area is assumed to be completely flat;</p></list-item>
<list-item>
<p>- if 0 &lt; <italic>T<sub>d</sub></italic> &lt; 1 the area contains a variable amount of texture;</p></list-item>
<list-item>
<p>- if <italic>T<sub>d</sub></italic> = 0, the area is considered to be highly textured.</p></list-item></list></p>
<p>The texture threshold for the current pixel, belonging to Bayer channel <italic>c</italic> (<italic>c=R,G,B</italic>)<italic>,</italic> is computed by adding the noise level estimation to the <italic>HVS</italic> response (2):
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">TextureThreshold</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">HVS</mml:mi>
<mml:mi mathvariant="italic">weight</mml:mi></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">NL</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>NL<sub>c</sub></italic> denotes the noise level estimation on the previous pixel of the same Bayer color channel <italic>c</italic>(see Section 3.5) and <italic>HVS<sub>weight</sub></italic> (<xref ref-type="fig" rid="f3-sensors-09-01692">Figure 3</xref>) can be interpreted as a <italic>jnd</italic> (<italic>just noticeable difference</italic>); hence an area is no longer flat if the <italic>D<sub>max</sub></italic> value exceeds the <italic>jnd</italic> plus the local noise level <italic>NL</italic>.</p>
<p>The green texture analyzer (<xref ref-type="fig" rid="f5-sensors-09-01692">Figure 5</xref>) uses a stronger rule for detecting flat areas, whereas the red/blue texture analyzer (<xref ref-type="fig" rid="f6-sensors-09-01692">Figure 6</xref>) detects more flat areas, being less sensitive to small pixel differences below the <italic>Th<sub>R/B</sub></italic> threshold. The gray-scale output of the texture detection is shown in <xref ref-type="fig" rid="f7-sensors-09-01692">Figure 7</xref>: bright pixels are associated to high texture, dark pixels to flat areas.</p></sec>
<sec>
<label>3.5.</label>
<title>Noise Level Estimator</title>
<p>In order to adapt the filter smoothing capability to the local characteristics of the image, a noise level estimation is required. The proposed noise estimation solution is pixel based and is implemented taking into account the previous estimation to calculate the current one.</p>
<p>The noise estimation equation is designed so that:
<list list-type="roman-lower">
<list-item>
<p>if the local area is completely flat (<italic>T<sub>d</sub></italic> = 1), then the noise level is set to <italic>D<sub>max</sub></italic>;</p></list-item>
<list-item>
<p>if the local area is highly textured (<italic>T<sub>d</sub></italic> = 0), the noise estimation is kept equal to the previous region (i.e., pixel);</p></list-item>
<list-item>
<p>otherwise a new value is estimated.</p></list-item></list></p>
<p>Each color channel has its own noise characteristics hence noise levels are tracked separately for each color channel. The noise level for each channel is estimated according to the following formulas:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>R</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>R</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>G</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>G</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>B</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">NL</mml:mi></mml:mrow>
<mml:mi>B</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>where <italic>T<sub>d</sub>(k)</italic> represents the texture degree at the current pixel and <italic>NL<sub>c</sub>(k</italic>−<italic>1)</italic> (<italic>c=R,G,B</italic>) is the previous noise level estimation, evaluated considering pixel of the same colour, already processed. For <italic>k</italic> = 1 the values <italic>NL<sub>R</sub>(k</italic>−<italic>1)</italic>, <italic>NL<sub>G</sub>(k</italic>−<italic>1)</italic> and <italic>NL<sub>B</sub>(k</italic>−<italic>1)</italic> are set to an initial low value depending on the pixel bit-depth. These equations satisfy requirements i), ii) and iii). The raster scanning order of the input image is constrained by global HW architecture. Starting from different spatial locations the noise level converges to the same values due to the presence of homogeneous areas that are, of course, prominent in almost all natural images.</p></sec>
<sec>
<label>3.6.</label>
<title>Similarity Thresholds and Weighting Coefficients computation</title>
<p>The final step of the filtering process consists in determining the weighting coefficients <italic>W<sub>i</sub></italic> to be assigned to the neighboring pixels of the filter mask. The absolute differences <italic>D<sub>i</sub></italic> between the central pixel and its neighborhood must be analyzed in combination with the local information (noise level, texture degree and pixel intensities) for estimating the degree of similarity between pixel pairs (see <xref ref-type="fig" rid="f8-sensors-09-01692">Figure 8</xref>). As stated in Section 2.2, if the central pixel <italic>P<sub>c</sub></italic> belongs to a textured area, then only small pixel differences must be filtered. The lower degree of filtering in textured areas allows maintaining the local sharpness, removing only pixel differences that are not perceived by the <italic>HVS</italic>.</p>
<p>The process for determining the similarity thresholds and the <italic>W<sub>i</sub></italic> coefficients can be expressed in terms of fuzzy logic (<xref ref-type="fig" rid="f9-sensors-09-01692">Figure 9</xref>).</p>
<p>Let:
<list list-type="simple">
<list-item>
<p>- <italic>P<sub>c</sub></italic> be the central pixel of the working window;</p></list-item>
<list-item>
<p>- <italic>P<sub>i</sub></italic>, i = 1,…,7, be the neighborhood pixels;</p></list-item>
<list-item>
<p>- <italic>D<sub>i</sub></italic> = <italic>abs(P<sub>c</sub></italic> − <italic>P<sub>i</sub>),</italic> i=1,…,7 the set of absolute differences between the central pixel and its neighborhood;</p></list-item></list></p>
<p>In order to obtain the <italic>W<sub>i</sub></italic> coefficients, each absolute difference <italic>D<sub>i</sub></italic> must be compared against two thresholds <italic>Th<sub>low</sub></italic> and <italic>Th<sub>high</sub></italic> that determine if, in relation to the local information, the <italic>i-th</italic> difference <italic>D<sub>i</sub></italic> is:
<list list-type="roman-lower">
<list-item>
<p>small enough to be heavily filtered,</p></list-item>
<list-item>
<p>big enough to remain untouched,</p></list-item>
<list-item>
<p>an intermediate value to be properly filtered.</p></list-item></list></p>
<p>The two thresholds can be interpreted as fuzzy parameters shaping the concept of similarity between pixel pairs. In particular, the associated fuzzy member function computes the similarity degree between the central and a neighborhood pixel.</p>
<p>By properly computing <italic>Th<sub>low</sub></italic> and <italic>Th<sub>high</sub></italic>, the shape of the membership function is determined (<xref ref-type="fig" rid="f10-sensors-09-01692">Figure 10</xref>).</p>
<p>To determine which of the above cases is valid for the current local area, the local texture degree is the key parameter to analyze. It is important to remember at this point that, by construction, the texture degree coefficient (<italic>T<sub>d</sub></italic>) incorporates the concepts of dark/bright and noise level; hence, its value is crucial to determine the similarity thresholds to be used for determining the <italic>W<sub>i</sub></italic> coefficients. In particular, the similarity thresholds are determined to obtain maximum smoothing in flat areas, minimum smoothing in highly textured areas, and intermediate filtering in areas containing medium texture; this can be obtained by using the following rules (4):
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi></mml:mrow>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi></mml:mrow>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">Th</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">high</mml:mi></mml:mrow></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:msub>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mn>0</mml:mn>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>Once the similarity thresholds have been fixed, it is possible to finally determine the filter weights by comparing the <italic>D<sub>i</sub></italic> differences against them (<xref ref-type="fig" rid="f10-sensors-09-01692">Figure 10</xref>).</p>
<p>To summarize, the weighting coefficient selection is performed as follows. If the <italic>i-th</italic> absolute difference <italic>D<sub>i</sub></italic> is lower than <italic>Th<sub>low</sub></italic>, it is reasonable to assume that pixels <italic>P</italic> and <italic>P<sub>i</sub></italic> are very similar; hence the maximum degree of similarity <italic>Max<sub>weight</sub></italic> is assigned to <italic>P<sub>i</sub></italic>. On the other hand, if the absolute difference between <italic>P</italic> and <italic>P<sub>i</sub></italic> is greater than <italic>Th<sub>high</sub></italic>, it is reasonable that this difference is due to texture details, hence <italic>P<sub>i</sub></italic> is assigned a null similarity weight. In the remaining cases, i.e. when the <italic>i-th</italic> absolute difference falls in the interval [<italic>Th<sub>low</sub></italic>, <italic>Th<sub>high</sub></italic>], a linear interpolation between <italic>Max<sub>weight</sub></italic> and 0 is performed, allowing determining the appropriate weight for <italic>P<sub>i</sub></italic>.</p></sec>
<sec>
<label>3.7.</label>
<title>Final Weighted Average</title>
<p>Let W<italic><sub>1</sub></italic>,…,W<italic><sub>N</sub></italic> (<italic>N</italic>: number of neighborhood pixels) be the set of weights computed for the each neighboring element of the central pixel <italic>P<sub>c</sub></italic>. The final filtered value <italic>P<sub>f</sub></italic> is obtained by weighted average as follows (5):
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>f</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>N</mml:mi></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>N</mml:mi></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>P</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>In order to preserve the original bitdepth, the similarity weights are normalized in the interval [0,1], and chosen according to <xref ref-type="disp-formula" rid="FD6">equation (6)</xref>:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>≤</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>L</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">low</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>D</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>≥</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">Th</mml:mi>
<mml:mi mathvariant="italic">high</mml:mi></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>L(Th<sub>low</sub>, Th<sub>high</sub>)</italic> performs a simple linear interpolation between <italic>Th<sub>low</sub></italic> and <italic>Th<sub>high</sub></italic> as depicted in <xref ref-type="fig" rid="f10-sensors-09-01692">Figure 10</xref>.</p></sec></sec>
<sec sec-type="results">
<label>4.</label>
<title>Experimental Results</title>
<p>The following sections describe the tests performed to assess the quality of the proposed algorithm. First, a test computing the noise power before and after filtering is reported. Next some comparisons between the proposed filter and other noise reduction algorithms ([<xref ref-type="bibr" rid="b25-sensors-09-01692">25</xref>,<xref ref-type="bibr" rid="b36-sensors-09-01692">36</xref>,<xref ref-type="bibr" rid="b37-sensors-09-01692">37</xref>]) are described.</p>
<sec>
<label>4.1.</label>
<title>Noise Power Test</title>
<p>A synthetic image was used to determine the amount of noise that the algorithm is capable to remove. Let us denote:
<list list-type="bullet">
<list-item>
<p><bold>I<sub>NOISY</sub></bold>: Noisy <italic>CFA</italic> Pattern</p></list-item>
<list-item>
<p><bold>I<sub>FILTERED</sub></bold>: Filtered <italic>CFA</italic> Pattern</p></list-item>
<list-item>
<p><bold>I<sub>ORIGINAL</sub></bold>: Original noiseless <italic>CFA</italic> Pattern</p></list-item></list></p>
<p>According to these definitions we have:
<list list-type="bullet">
<list-item>
<p><bold>I<sub>NOISY</sub></bold> − <bold>I<sub>ORIGINAL</sub> = I<sub>ADDED_NOISE</sub></bold></p></list-item>
<list-item>
<p><bold>I<sub>FILTERED</sub></bold> − <bold>I<sub>ORIGINAL</sub> = I<sub>RESIDUAL_NOISE</sub></bold></p></list-item></list>where <bold>I<sub>ADDED_NOISE</sub></bold> is the image containing only the noise artificially added to <bold>I<sub>ORIGINAL</sub></bold>, whereas <bold>I<sub>RESIDUAL_NOISE</sub></bold> is the image containing the residual noise after filtering. The noise power is computed for both <bold>I<sub>ADDED_NOISE</sub></bold> and <bold>I<sub>RESIDUAL_NOISE</sub></bold> according to the following <xref ref-type="disp-formula" rid="FD7">formula (7)</xref>:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mn>20</mml:mn>
<mml:mo> </mml:mo>
<mml:mtext>log</mml:mtext></mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn></mml:mrow></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="italic">MN</mml:mi></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:munderover>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>To modulate the power of the additive noise, different values of the standard deviation of a Gaussian distribution are used. Noise is assumed to be <italic>AWGN</italic> (<italic>Additive White Gaussian Noise</italic>), with zero mean.</p>
<p>A synthetic test image has been generated having the following properties: it is composed by a succession of stripes having equal brightness but different noise power. Each stripe is composed of 10 lines and noise is added with increasing power starting from the top of the image and proceeding downwards (<xref ref-type="fig" rid="f11-sensors-09-01692">Figure 11</xref>).</p>
<p>The graph in <xref ref-type="fig" rid="f12-sensors-09-01692">Figure 12</xref> illustrates the filtering effects in terms of noise power; the <italic>x</italic>-axis represents the noise standard deviation; the <italic>y</italic>-axis shows the corresponding noise power decibels before and after filtering. The filter significantly reduces noise and gains up to 6–7dB can be obtained in terms of noise power reduction.</p></sec>
<sec>
<label>4.2.</label>
<title>Visual Quality Test</title>
<p>In order to assess the visual quality of the proposed method, we have compared it with the <italic>SUSAN</italic> (Smallest Univalue Segment Assimilating Nucleus) [<xref ref-type="bibr" rid="b37-sensors-09-01692">37</xref>] and multistage median filters [<xref ref-type="bibr" rid="b36-sensors-09-01692">36</xref>] classical noise reduction algorithm. This choice is motivated by considering the comparable complexity of these solutions. Though more complex recent methods for denoising image data exist [<xref ref-type="bibr" rid="b7-sensors-09-01692">7</xref>,<xref ref-type="bibr" rid="b8-sensors-09-01692">8</xref>,<xref ref-type="bibr" rid="b18-sensors-09-01692">18</xref>,<xref ref-type="bibr" rid="b38-sensors-09-01692">38</xref>] achieving very good results, they are not yet suitable for real-time implementation.</p>
<p>The tests were executed using two different approaches. In the first approach, the original noisy Bayer data were interpolated obtaining a noisy color image, which was splitted in its color channels; each color plane was filtered independently using SUSAN. Finally, the filtered color channels were recombined to obtain the denoised color image as sketched in <xref ref-type="fig" rid="f13-sensors-09-01692">Figure 13</xref>.</p>
<p>The second approach consists in slightly modifying the <italic>SUSAN</italic> algorithm so that it can process Bayer data. In both cases, the results of <italic>SUSAN</italic> were compared with the color-interpolated image obtained from a denoised Bayer pattern produced by the proposed method.</p>
<p><xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14</xref> shows two of test noisy reference images acquired by a <italic>CFA</italic> image sensor (2 megapixels) after colour interpolation. Original <italic>SNR</italic> values for the two images are 30.2 dB and 47.2 dB, respectively. After filtering, the corresponding <italic>SNR</italic> values became comparable and higher for both, <italic>SUSAN</italic> and our filtering. In the first comparison test, both algorithms show very good performances; the proposed method, anyway, is capable to preserve some small details that are lost by <italic>SUSAN</italic> independent <italic>R/G/B</italic> filtering. Furthermore, processing is very fast because the method processes only one plane of image information, i.e. the <italic>CFA</italic> data. <xref ref-type="fig" rid="f15-sensors-09-01692">Figure 15</xref> shows a magnified detail of <xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14(a)</xref> and the filtering results with <italic>SUSAN</italic> and our method. <xref ref-type="fig" rid="f16-sensors-09-01692">Figure 16</xref> shows how the proposed method significantly retains texture and sharpness after filtering. <xref ref-type="fig" rid="f17-sensors-09-01692">Figure 17</xref> shows two different details of the noisy image in <xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14(b)</xref> and their filtered counterparts. The homogeneous areas are heavily filtered (a), (b); on the other hand, in textured areas, the detail is well preserved (c), (d).</p>
<p>Finally, <xref ref-type="fig" rid="f18-sensors-09-01692">Figure 18</xref> illustrates the results of the multistage median filters described in [<xref ref-type="bibr" rid="b36-sensors-09-01692">36</xref>] compared with the proposed filter. Specifically, the multistage median-1 and multistage median-3 filter outputs were considered. The three methods work on <italic>CFA</italic> data. <xref ref-type="fig" rid="f18-sensors-09-01692">Figure 18 (e)</xref> shows, again, that the proposed filtering technique is able to preserve texture and sharpness very well.</p></sec>
<sec>
<label>4.3.</label>
<title>PSNR test</title>
<p>In order to numerically quantify the performance of the filtering process, the standard Kodak 24 (8-bpp) [<xref ref-type="bibr" rid="b39-sensors-09-01692">39</xref>] images have been processed with the proposed method comparing them with the outputs of <italic>SUSAN</italic> [<xref ref-type="bibr" rid="b37-sensors-09-01692">37</xref>], <italic>Multistage median-1</italic>, <italic>Multistage median-3</italic> algorithms [<xref ref-type="bibr" rid="b36-sensors-09-01692">36</xref>] and the following fuzzy approaches from [<xref ref-type="bibr" rid="b25-sensors-09-01692">25</xref>]:
<list list-type="simple">
<list-item>
<p><italic>- GMED: Gaussian Fuzzy Filter with Median Center</italic></p></list-item>
<list-item>
<p><italic>- GMAV: Gaussian Fuzzy Filter with Moving Average Center</italic></p></list-item>
<list-item>
<p><italic>- ATMED: Asymmetrical Triangular Fuzzy Filter with Median Center</italic></p></list-item>
<list-item>
<p><italic>- ATMAV: Asymmetrical Triangular Fuzzy Filter with Moving Average Center</italic></p></list-item></list></p>
<p>After converting each image of the set to Bayer pattern format, the simulation was performed by adding noise with increasing standard deviation to each CFA plane. In particular the following values have been used: σ = 5, 8, 10. More specifically, the aforementioned values of σ refer to the noise level in the middle of the dynamic range. To simulate a more realistic sensor noise, in fact, we followed the model described in [<xref ref-type="bibr" rid="b34-sensors-09-01692">34</xref>,<xref ref-type="bibr" rid="b35-sensors-09-01692">35</xref>], that allows obtaining lower noise values for dark areas and higher noise values for bright areas, according to a square root characterization of the noise. In order to exclude the effects of different color interpolations from the computation of the PSNR, the reference images were obtained following the procedure described in <xref ref-type="fig" rid="f19-sensors-09-01692">Figure 19(a)</xref>; in this way, both images (i.e. clean and noisy) are generated using the same color interpolation algorithm.</p>
<p>Experiments show that the proposed method performs well in terms of PSNR compared to the algorithms used in the test (<xref ref-type="fig" rid="f20-sensors-09-01692">Figure 20</xref>). In order to compare the proposed method with other fuzzy approaches, we considered some methods described in [<xref ref-type="bibr" rid="b25-sensors-09-01692">25</xref>]. The results are shown in <xref ref-type="fig" rid="f21-sensors-09-01692">Figure 21</xref>.</p></sec></sec>
<sec sec-type="conclusions">
<title>Conclusions and Future Work</title>
<p>A spatial adaptive denoising algorithm has been presented; the method exploits characteristics of the human visual system and sensor noise statistics in order to achieve pleasant results in terms of perceived image quality. The noise level and texture degree are computed to adapt the filter behaviour to the local characteristics of the image. The algorithm is suitable for real time processing of images acquired in CFA format. Future work includes the extension of the processing masks along with the study and integration of other <italic>HVS</italic> characteristics.</p></sec></body>
<back>
<ack>
<p>We wish to thank the anonymous reviewers for their accurate and constructive comments in reviewing this paper.</p></ack>
<ref-list>
<title>References and Notes</title>
<ref id="b1-sensors-09-01692"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lukac</surname><given-names>R.</given-names></name></person-group><article-title>Single-sensor imaging in consumer digital cameras: a survey of recent advances and future directions</article-title><source>J. Real-Time Image Process</source><year>2006</year><volume>1</volume><fpage>45</fpage><lpage>52</lpage><pub-id pub-id-type="doi">10.1007/s11554-006-0003-z</pub-id></citation></ref>
<ref id="b2-sensors-09-01692"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Castorina</surname><given-names>A.</given-names></name><name><surname>Mancuso</surname><given-names>M.</given-names></name></person-group><article-title>High Dynamic Range Imaging for Digital Still Camera: an Overview</article-title><source>SPIE J. Electron. Imaging</source><year>2003</year><volume>12</volume><fpage>459</fpage><lpage>469</lpage><pub-id pub-id-type="doi">10.1117/1.1580829</pub-id></citation></ref>
<ref id="b3-sensors-09-01692"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Messina</surname><given-names>G.</given-names></name><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Mancuso</surname><given-names>M.</given-names></name><name><surname>Buemi</surname><given-names>A.</given-names></name></person-group><article-title>Improving Image Resolution by Adaptive Back-Projection Correction Techniques</article-title><source>IEEE Trans. Consum. Electron</source><year>2002</year><volume>48</volume><fpage>409</fpage><lpage>416</lpage><pub-id pub-id-type="doi">10.1109/TCE.2002.1037022</pub-id></citation></ref>
<ref id="b4-sensors-09-01692"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Bosco</surname><given-names>A.</given-names></name><name><surname>Castorina</surname><given-names>A.</given-names></name><name><surname>Messina</surname><given-names>G.</given-names></name></person-group><article-title>Automatic Image Enhancement by Content Dependent Exposure Correction</article-title><source>EURASIP J. Appl. Signal Process</source><year>2004</year><volume>2004</volume><fpage>1849</fpage><lpage>1860</lpage><pub-id pub-id-type="doi">10.1155/S1110865704404107</pub-id></citation></ref>
<ref id="b5-sensors-09-01692"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Castorina</surname><given-names>A.</given-names></name><name><surname>Guarnera</surname><given-names>M.</given-names></name><name><surname>Vivirito</surname><given-names>P.</given-names></name></person-group><article-title>A Global Enhancement Pipeline for Low-cost Imaging Devices</article-title><source>IEEE Trans. Consum. Electron</source><year>2003</year><volume>49</volume><fpage>670</fpage><lpage>675</lpage><pub-id pub-id-type="doi">10.1109/TCE.2003.1233798</pub-id></citation></ref>
<ref id="b6-sensors-09-01692"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bayer</surname><given-names>B.E.</given-names></name></person-group><article-title>Color Imaging Array</article-title><source>US. Pat. 3,971,965</source><year>1976</year></citation></ref>
<ref id="b7-sensors-09-01692"><label>7.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hirakawa</surname><given-names>K.</given-names></name><name><surname>Parks</surname><given-names>TW.</given-names></name></person-group><article-title>Joint demosaicing and denoising</article-title><conf-name>Proceedings of the IEEE International Conference on Image Processing (ICIP 2005)</conf-name><conf-loc>Genova, Italy</conf-loc><conf-date>Sept. 2005</conf-date><fpage>309</fpage><lpage>312</lpage></citation></ref>
<ref id="b8-sensors-09-01692"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hirakawa</surname><given-names>K.</given-names></name><name><surname>Parks</surname><given-names>T.W.</given-names></name></person-group><article-title>Joint demosaicing and denoising</article-title><source>IEEE Trans. Image Process</source><year>2006</year><volume>15</volume><fpage>2146</fpage><lpage>2157</lpage><pub-id pub-id-type="doi">10.1109/TIP.2006.875241</pub-id><pub-id pub-id-type="pmid">16900672</pub-id></citation></ref>
<ref id="b9-sensors-09-01692"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lu</surname><given-names>W.</given-names></name><name><surname>Tan</surname><given-names>Y.P.</given-names></name></person-group><article-title>Color Filter Array Demosaicking: New Method and Performance Measures</article-title><source>IEEE Trans. Image Process</source><year>2003</year><volume>12</volume><fpage>1194</fpage><lpage>1210</lpage><pub-id pub-id-type="doi">10.1109/TIP.2003.816004</pub-id><pub-id pub-id-type="pmid">18237887</pub-id></citation></ref>
<ref id="b10-sensors-09-01692"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Trussel</surname><given-names>H.</given-names></name><name><surname>Hartwig</surname><given-names>R.</given-names></name></person-group><article-title>Mathematics for Demosaicking</article-title><source>IEEE Trans. Image Process</source><year>2002</year><volume>11</volume><fpage>485</fpage><lpage>492</lpage><pub-id pub-id-type="doi">10.1109/TIP.2002.999681</pub-id><pub-id pub-id-type="pmid">18244649</pub-id></citation></ref>
<ref id="b11-sensors-09-01692"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Mancuso</surname><given-names>M.</given-names></name></person-group><article-title>An Introduction to the Digital Still Camera Technology</article-title><source>ST J. Syst. Res. — Special Issue on Image. Process. Digital Still Camera</source><year>2001</year><volume>2</volume><fpage>2</fpage><lpage>9</lpage></citation></ref>
<ref id="b12-sensors-09-01692"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jayantn</surname><given-names>N.</given-names></name><name><surname>Johnston</surname><given-names>J.</given-names></name><name><surname>Safranek</surname><given-names>R.</given-names></name></person-group><article-title>Signal Compression Based On Models Of Human Perception</article-title><source>Proceedings of the IEEE</source><month>Oct</month><year>1993</year><volume>81</volume><fpage>1385</fpage><lpage>1422</lpage><pub-id pub-id-type="doi">10.1109/5.241504</pub-id></citation></ref>
<ref id="b13-sensors-09-01692"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nadenau</surname><given-names>M.J.</given-names></name><name><surname>Winkler</surname><given-names>S.</given-names></name><name><surname>Alleysson</surname><given-names>D.</given-names></name><name><surname>Kunt</surname><given-names>M.</given-names></name></person-group><article-title>Human Vision Models for Perceptually Optimized Image Processing - a Review</article-title><source>IEEE Trans. Image Process</source><year>2003</year><volume>12</volume><fpage>58</fpage><lpage>70</lpage><pub-id pub-id-type="doi">10.1109/TIP.2002.807358</pub-id><pub-id pub-id-type="pmid">18237879</pub-id></citation></ref>
<ref id="b14-sensors-09-01692"><label>14.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Pappas</surname><given-names>T.N.</given-names></name><name><surname>Safranek</surname><given-names>R.J.</given-names></name></person-group><article-title>Perceptual Criteria for Image Quality Evaluation</article-title><source>Handbook of Image and Video Processing</source><person-group person-group-type="editor"><name><surname>Bovik</surname><given-names>A.C.</given-names></name></person-group><publisher-name>Publisher: Academic Press</publisher-name><publisher-loc>San Diego, CA, USA</publisher-loc><year>2000</year><fpage>669</fpage><lpage>684</lpage></citation></ref>
<ref id="b15-sensors-09-01692"><label>15.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>Z.</given-names></name><name><surname>Lu</surname><given-names>L.</given-names></name><name><surname>Bovik</surname><given-names>A.</given-names></name></person-group><article-title>Why Is Image Quality Assessment so difficult?</article-title><conf-name>Presented at the IEEE International Conference on Acoustics, Speech, &amp; Signal Processing</conf-name><conf-loc>Orlando, FL, USA</conf-loc><conf-date>May 2002</conf-date><fpage>3313</fpage><lpage>3316</lpage></citation></ref>
<ref id="b16-sensors-09-01692"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>Z.</given-names></name><name><surname>Bovik</surname><given-names>A.C.</given-names></name><name><surname>Sheikh</surname><given-names>H.R.</given-names></name><name><surname>Simoncelli</surname><given-names>E.P.</given-names></name></person-group><article-title>Image quality assessment: from error visibility to structural similarity</article-title><source>IEEE Trans. Image Process</source><year>2004</year><volume>13</volume><fpage>600</fpage><lpage>612</lpage><pub-id pub-id-type="doi">10.1109/TIP.2003.819861</pub-id><pub-id pub-id-type="pmid">15376593</pub-id></citation></ref>
<ref id="b17-sensors-09-01692"><label>17.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Longere</surname><given-names>P.</given-names></name><name><surname>Xuemei</surname><given-names>Z.</given-names></name><name><surname>Delahunt</surname><given-names>P.B.</given-names></name><name><surname>Brainard</surname><given-names>D.H.</given-names></name></person-group><article-title>Perceptual Assessment of Demosaicing Algorithm Performance</article-title><conf-name>Proceedings of the IEEE</conf-name><conf-date>Jan 2002</conf-date><fpage>123</fpage><lpage>132</lpage></citation></ref>
<ref id="b18-sensors-09-01692"><label>18.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Pizurica</surname><given-names>A.</given-names></name><name><surname>Zlokolica</surname><given-names>V.</given-names></name><name><surname>Philips</surname><given-names>W.</given-names></name></person-group><article-title>Combined wavelet domain and temporal denoising</article-title><conf-name>Proceedings of the IEEE International Conference on Advanced Video and Signal Based Surveillance (AVSS)</conf-name><conf-loc>Miami, FL., USA</conf-loc><conf-date>July 2003</conf-date><fpage>334</fpage><lpage>341</lpage></citation></ref>
<ref id="b19-sensors-09-01692"><label>19.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Portilla</surname><given-names>J.</given-names></name><name><surname>Strela</surname><given-names>V.</given-names></name><name><surname>Wainwright</surname><given-names>M.J.</given-names></name><name><surname>Simoncelli</surname><given-names>E.P.</given-names></name></person-group><article-title>Image Denoising Using Scale Mixtures of Gaussians in the Wavelet Domain</article-title><source>IEEE Trans. Image Process</source><year>2003</year><volume>12</volume><fpage>1338</fpage><lpage>1351</lpage><pub-id pub-id-type="doi">10.1109/TIP.2003.818640</pub-id><pub-id pub-id-type="pmid">18244692</pub-id></citation></ref>
<ref id="b20-sensors-09-01692"><label>20.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Scharcanski</surname><given-names>J.</given-names></name><name><surname>Jung</surname><given-names>C.R.</given-names></name><name><surname>Clarke</surname><given-names>R.T.</given-names></name></person-group><article-title>Adaptive Image Denoising Using Scale and Space Consistency</article-title><source>IEEE Trans. Image Process</source><year>2002</year><volume>11</volume><fpage>1092</fpage><lpage>1101</lpage><pub-id pub-id-type="doi">10.1109/TIP.2002.802528</pub-id><pub-id pub-id-type="pmid">18249730</pub-id></citation></ref>
<ref id="b21-sensors-09-01692"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Barcelos</surname><given-names>C.A.Z.</given-names></name><name><surname>Boaventura</surname><given-names>M.</given-names></name><name><surname>Silva</surname><given-names>E.C.</given-names></name></person-group><article-title>A Well-Balanced Flow Equation for Noise Removal and Edge Detection</article-title><source>IEEE Trans. Image Process</source><year>2003</year><volume>12</volume><fpage>751</fpage><lpage>763</lpage><pub-id pub-id-type="doi">10.1109/TIP.2003.814242</pub-id><pub-id pub-id-type="pmid">18237950</pub-id></citation></ref>
<ref id="b22-sensors-09-01692"><label>22.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Amer</surname><given-names>A.</given-names></name><name><surname>Dubois</surname><given-names>E.</given-names></name></person-group><article-title>Fast and reliable structure-oriented video noise estimation</article-title><source>IEEE Trans. Circuits Syst. Video Technol</source><year>2005</year><volume>15</volume><fpage>113</fpage><lpage>118</lpage><pub-id pub-id-type="doi">10.1109/TCSVT.2004.837017</pub-id></citation></ref>
<ref id="b23-sensors-09-01692"><label>23.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kim</surname><given-names>Y.-H.</given-names></name><name><surname>Lee</surname><given-names>J.</given-names></name></person-group><article-title>Image feature and noise detection based on statistical hypothesis tests and their applications in noise reduction</article-title><source>IEEE Trans. Consum. Electron</source><year>2005</year><volume>51</volume><fpage>1367</fpage><lpage>1378</lpage><pub-id pub-id-type="doi">10.1109/TCE.2005.1561869</pub-id></citation></ref>
<ref id="b24-sensors-09-01692"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Russo</surname><given-names>F.</given-names></name></person-group><article-title>Technique for Image Denoising Based on Adaptive Piecewise Linear Filters and Automatic Parameter Tuning</article-title><source>IEEE Trans. Instrum. Meas</source><year>2006</year><volume>55</volume><fpage>1362</fpage><lpage>1367</lpage><pub-id pub-id-type="doi">10.1109/TIM.2006.876404</pub-id></citation></ref>
<ref id="b25-sensors-09-01692"><label>25.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kwan</surname><given-names>H.K.</given-names></name><name><surname>Cai</surname><given-names>Y.</given-names></name></person-group><article-title>Fuzzy filters for image filtering</article-title><conf-name>Proceedings of the International Symposium on Circuits and Systems</conf-name><conf-date>Aug. 2003</conf-date><fpage>161</fpage><lpage>164</lpage></citation></ref>
<ref id="b26-sensors-09-01692"><label>26.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Schulte</surname><given-names>S.</given-names></name><name><surname>De Witte</surname><given-names>V.</given-names></name><name><surname>Kerre</surname><given-names>E.E.</given-names></name></person-group><article-title>A fuzzy noise reduction method for colour images</article-title><source>IEEE Trans. Image Process</source><year>2007</year><volume>16</volume><fpage>1425</fpage><lpage>1436</lpage><pub-id pub-id-type="doi">10.1109/TIP.2007.891807</pub-id><pub-id pub-id-type="pmid">17491470</pub-id></citation></ref>
<ref id="b27-sensors-09-01692"><label>27.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosco</surname><given-names>A.</given-names></name><name><surname>Findlater</surname><given-names>K.</given-names></name><name><surname>Battiato</surname><given-names>S.</given-names></name><name><surname>Castorina</surname><given-names>A.</given-names></name></person-group><article-title>Noise Reduction Filter for Full-Frame Imaging Devices</article-title><source>IEEE Trans. Consum. Electron</source><year>2003</year><volume>49</volume><fpage>676</fpage><lpage>682</lpage><pub-id pub-id-type="doi">10.1109/TCE.2003.1233800</pub-id></citation></ref>
<ref id="b28-sensors-09-01692"><label>28.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Wandell</surname><given-names>B.</given-names></name></person-group><source>Foundations of Vision</source><edition>1st Edition</edition><publisher-name>Sinauer Associates</publisher-name><publisher-loc>Sunderland, Massachusetts, USA</publisher-loc><year>1995</year></citation></ref>
<ref id="b29-sensors-09-01692"><label>29.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Gonzales</surname><given-names>R.</given-names></name><name><surname>Woods</surname><given-names>R.</given-names></name></person-group><source>Digital Image Processing</source><edition>3rd Edition</edition><publisher-name>Addison-Wesley</publisher-name><publisher-loc>Reading, MA</publisher-loc><year>1992</year></citation></ref>
<ref id="b30-sensors-09-01692"><label>30.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Lian</surname><given-names>N.</given-names></name><name><surname>Chang</surname><given-names>L.</given-names></name><name><surname>Tan</surname><given-names>Y.-P.</given-names></name></person-group><article-title>Improved color filter array demosaicking by accurate luminance estimation</article-title><conf-name>Proceedings of the IEEE International Conference on Image Processing (ICIP 2005)</conf-name><conf-loc>Genova, Italy</conf-loc><conf-date>Sept. 2005</conf-date><fpage>41</fpage><lpage>44</lpage></citation></ref>
<ref id="b31-sensors-09-01692"><label>31.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chou</surname><given-names>C-H.</given-names></name><name><surname>Li</surname><given-names>Y.-C.</given-names></name></person-group><article-title>A perceptually tuned subband image coder based on the measure of just-noticeable-distortion profile</article-title><source>IEEE Trans. Circuits Syst. Video Technol</source><year>1995</year><volume>5</volume><fpage>467</fpage><lpage>476</lpage><pub-id pub-id-type="doi">10.1109/76.475889</pub-id></citation></ref>
<ref id="b32-sensors-09-01692"><label>32.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hontsch</surname><given-names>I.</given-names></name><name><surname>Karam</surname><given-names>L.J.</given-names></name></person-group><article-title>Locally adaptive perceptual image coding</article-title><source>IEEE Trans. Image Process</source><year>2000</year><volume>9</volume><fpage>1472</fpage><lpage>1483</lpage><pub-id pub-id-type="doi">10.1109/83.862622</pub-id><pub-id pub-id-type="pmid">18262986</pub-id></citation></ref>
<ref id="b33-sensors-09-01692"><label>33.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>X.H.</given-names></name><name><surname>Lin</surname><given-names>W.S.</given-names></name><name><surname>Xue</surname><given-names>P.</given-names></name></person-group><article-title>Improved estimation for just-noticeable visual distortion</article-title><source>Signal Process</source><year>2005</year><volume>85</volume><fpage>795</fpage><lpage>808</lpage><pub-id pub-id-type="doi">10.1016/j.sigpro.2004.12.002</pub-id></citation></ref>
<ref id="b34-sensors-09-01692"><label>34.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Foi</surname><given-names>A.</given-names></name><name><surname>Alenius</surname><given-names>S.</given-names></name><name><surname>Katkovnik</surname><given-names>V.</given-names></name><name><surname>Egiazarian</surname><given-names>K.</given-names></name></person-group><article-title>Noise measurement for raw-data of digital imaging sensors by automatic segmentation of non-uniform targets</article-title><source>IEEE Sensors J</source><year>2007</year><volume>7</volume><fpage>1456</fpage><lpage>1461</lpage><pub-id pub-id-type="doi">10.1109/JSEN.2007.904864</pub-id></citation></ref>
<ref id="b35-sensors-09-01692"><label>35.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Foi</surname><given-names>A.</given-names></name><name><surname>Trimeche</surname><given-names>M.</given-names></name><name><surname>Katkovnik</surname><given-names>V.</given-names></name><name><surname>Egiazarian</surname><given-names>K.</given-names></name></person-group><article-title>Practical Poissonian-Gaussian Noise Modeling and Fitting for Single-Image Raw-Data</article-title><source>IEEE Trans. Image Process</source><year>2008</year><volume>17</volume><fpage>1737</fpage><lpage>1754</lpage><pub-id pub-id-type="doi">10.1109/TIP.2008.2001399</pub-id><pub-id pub-id-type="pmid">18784024</pub-id></citation></ref>
<ref id="b36-sensors-09-01692"><label>36.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kalevo</surname><given-names>O.</given-names></name><name><surname>Rantanen</surname><given-names>H.</given-names></name></person-group><article-title>Noise Reduction Techniques for Bayer-Matrix Images</article-title><conf-name>Proceedings of SPIE Electronic Imaging, Sensors and Cameras Systems for Scientific, Industrial and Digital Photography Applications III</conf-name><conf-loc>San Jose, CA, USA</conf-loc><conf-date>Jan 2002</conf-date><volume>4669</volume></citation></ref>
<ref id="b37-sensors-09-01692"><label>37.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname><given-names>S.M.</given-names></name><name><surname>Brady</surname><given-names>J.M.</given-names></name></person-group><article-title>SUSAN - A New Approach to Low Level Image Processing</article-title><source>Int. J. Comput. Vision</source><year>1997</year><volume>23</volume><fpage>45</fpage><lpage>78</lpage><pub-id pub-id-type="doi">10.1023/A:1007963824710</pub-id></citation></ref>
<ref id="b38-sensors-09-01692"><label>38.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>L.</given-names></name><name><surname>Wu</surname><given-names>X.</given-names></name><name><surname>Zhang</surname><given-names>D.</given-names></name></person-group><article-title>Color Reproduction from Noisy CFA Data of Single Sensor Digital Cameras</article-title><source>IEEE Trans. Image Process</source><year>2007</year><volume>16</volume><fpage>2184</fpage><lpage>2197</lpage><pub-id pub-id-type="doi">10.1109/TIP.2007.901807</pub-id><pub-id pub-id-type="pmid">17784592</pub-id></citation></ref>
<ref id="b39-sensors-09-01692"><label>39.</label><citation citation-type="web"><source>Standard Kodak test images</source><comment><ext-link xlink:href="http://r0k.us/graphics/kodak/" ext-link-type="uri">http://r0k.us/graphics/kodak/</ext-link></comment></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures</title>
<fig id="f1-sensors-09-01692" position="float">
<label>Figure 1.</label>
<caption>
<p>Image Generation Pipeline.</p></caption>
<graphic xlink:href="sensors-09-01692f1.gif"/></fig>
<fig id="f2-sensors-09-01692" position="float">
<label>Figure 2.</label>
<caption>
<p>Overall Filter Block Diagram.</p></caption>
<graphic xlink:href="sensors-09-01692f2.gif"/></fig>
<fig id="f3-sensors-09-01692" position="float">
<label>Figure 3.</label>
<caption>
<p>HVS curve used in the proposed approach.</p></caption>
<graphic xlink:href="sensors-09-01692f3.gif"/></fig>
<fig id="f4-sensors-09-01692" position="float">
<label>Figure 4.</label>
<caption>
<p>Filter Masks for Bayer Pattern Data.</p></caption>
<graphic xlink:href="sensors-09-01692f4.gif"/></fig>
<fig id="f5-sensors-09-01692" position="float">
<label>Figure 5.</label>
<caption>
<p>Green Texture Analyzer.</p></caption>
<graphic xlink:href="sensors-09-01692f5.gif"/></fig>
<fig id="f6-sensors-09-01692" position="float">
<label>Figure 6.</label>
<caption>
<p>Red/Blue texture analyzer.</p></caption>
<graphic xlink:href="sensors-09-01692f6.gif"/></fig>
<fig id="f7-sensors-09-01692" position="float">
<label>Figure 7.</label>
<caption>
<p>Texture Analyzer output: (a) input image after colour interpolation (b) gray-scale texture degree output: bright areas correspond to high frequency, dark areas correspond to low frequencies.</p></caption>
<graphic xlink:href="sensors-09-01692f7.gif"/></fig>
<fig id="f8-sensors-09-01692" position="float">
<label>Figure 8.</label>
<caption>
<p>The Wi coefficients weight the similarity degree between the central pixel and its neighborhood.</p></caption>
<graphic xlink:href="sensors-09-01692f8.gif"/></fig>
<fig id="f9-sensors-09-01692" position="float">
<label>Figure 9.</label>
<caption>
<p>Block diagram of the fuzzy computation process for determining the similarity weights between the central pixel and its N neighborhoods.</p></caption>
<graphic xlink:href="sensors-09-01692f9.gif"/></fig>
<fig id="f10-sensors-09-01692" position="float">
<label>Figure 10.</label>
<caption>
<p>Weights assignment (Similarity Evaluator Block). The i-th weight denotes the degree of similarity between the central pixel in the filter mask and the i-th pixel in the neighborhood.</p></caption>
<graphic xlink:href="sensors-09-01692f10.gif"/></fig>
<fig id="f11-sensors-09-01692" position="float">
<label>Figure 11.</label>
<caption>
<p>Synthetic image test</p></caption>
<graphic xlink:href="sensors-09-01692f11.gif"/></fig>
<fig id="f12-sensors-09-01692" position="float">
<label>Figure 12.</label>
<caption>
<p>Noise power test. Upper line: noise level before filtering. Lower line: residual noise power after filtering.</p></caption>
<graphic xlink:href="sensors-09-01692f12.gif"/></fig>
<fig id="f13-sensors-09-01692" position="float">
<label>Figure 13.</label>
<caption>
<p>Overall scheme used to compare the Susan algorithm with the proposed method. The noisy color image is filtered by processing its color channels independently. The results are recombined to reconstruct the denoised color image.</p></caption>
<graphic xlink:href="sensors-09-01692f13.gif"/></fig>
<fig id="f14-sensors-09-01692" position="float">
<label>Figure 14.</label>
<caption>
<p>Images acquired by a CFA sensor. (a) SNR value 30.2dB. (b) SNR value 47.2dB. The yellow crops represent the magnified details contained in the following figures.</p></caption>
<graphic xlink:href="sensors-09-01692f14.gif"/></fig>
<fig id="f15-sensors-09-01692" position="float">
<label>Figure 15.</label>
<caption>
<p>A magnified detail of <xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14(a)</xref>, to better evaluate the comparison between the proposed filter and the SUSAN algorithm applied on R/G/B channels separately. Both methods preserve details very well, although the proposed technique is capable to better preserve texture sharpness; the enhancement is visible by looking at the wall and the roof texture. The proposed method uses fewer resources as the whole filtering action takes place on one plane of CFA data.</p></caption>
<graphic xlink:href="sensors-09-01692f15.gif"/></fig>
<fig id="f16-sensors-09-01692" position="float">
<label>Figure 16.</label>
<caption>
<p>Comparison test at CFA level (magnified details of <xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14(a)</xref>). The original SUSAN implementation was slightly modified so that it can process Bayer data. The efficiency of the proposed method in retaining image sharpness and texture is clearly visible.</p></caption>
<graphic xlink:href="sensors-09-01692f16.gif"/></fig>
<fig id="f17-sensors-09-01692" position="float">
<label>Figure 17.</label>
<caption>
<p>Magnified details of <xref ref-type="fig" rid="f14-sensors-09-01692">Figure 14(b)</xref>. (a) 200% zoomed (pixel resize) cropped part of noisy image. (b) Filtered 200% zoomed (pixel resize) counterpart (c) 200% zoomed (pixel resize) cropped part of noisy image. (d) Filtered 200% zoomed (pixel resize) counterpart. The effects of the proposed method over flat (a), (b) and textured (c), (d) areas are shown. The noisy images are obtained by color interpolating unfiltered Bayer data (a), (c). The corresponding color images produced by demosaicing filtered Bayer data (b), (d). SNR values are: 47.2dB for noisy image and 51.8dB for filtered image.</p></caption>
<graphic xlink:href="sensors-09-01692f17.gif"/></fig>
<fig id="f18-sensors-09-01692" position="float">
<label>Figure 18.</label>
<caption>
<p>(a) Original Image. (b) Noisy image. (c) Cropped and zoomed noisy image detail. Cropped and zoomed noisy image detail filtered with: Multistage median-1 filter(d), Multistage median-3 filter (e), proposed method(f).</p></caption>
<graphic xlink:href="sensors-09-01692f18a.gif"/>
<graphic xlink:href="sensors-09-01692f18b.gif"/></fig>
<fig id="f19-sensors-09-01692" position="float">
<label>Figure 19.</label>
<caption>
<p>Testing procedure. (a) The original Kodak color image is converted to Bayer pattern format and demosaiced. (b) Noise is added to the Bayer image, filtered and color interpolated again. Hence, color interpolation is the same for the clean reference and the denoised images.</p></caption>
<graphic xlink:href="sensors-09-01692f19.gif"/></fig>
<fig id="f20-sensors-09-01692" position="float">
<label>Figure 20.</label>
<caption>
<p>PSNR comparison between proposed solution and other spatial approaches for the Standard Kodak Images test set. (a) Kodak noisy images set with standard deviation 5. (b) Kodak noisy images set with standard deviation 8. (c) Kodak noisy images set with standard deviation 10.</p></caption>
<graphic xlink:href="sensors-09-01692f20a.gif"/>
<graphic xlink:href="sensors-09-01692f20b.gif"/></fig>
<fig id="f21-sensors-09-01692" position="float">
<label>Figure 21.</label>
<caption>
<p>PSNR comparison between proposed solution and other fuzzy approaches for the Standard Kodak Images test set. (a) Kodak noisy images set with standard deviation 5. (b) Kodak noisy images set with standard deviation 8. (c) Kodak noisy images set with standard deviation 10.</p></caption>
<graphic xlink:href="sensors-09-01692f21a.gif"/>
<graphic xlink:href="sensors-09-01692f21b.gif"/></fig></sec></back></article>
