This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2009-217806, filed Sep. 18, 2009, the entire contents of which are incorporated herein by reference.
1. Field
One embodiment of the invention relates to an image processing apparatus, a display device, and an image processing method.
2. Description of the Related Art
Filtering has been performed with an edge-preserving smoothing filter as image processing to remove noise, such as mosquito noise and block noise, from an image. For example, Japanese Patent Application Publication (KOKAI) No. H7-23227 discloses conventional filtering. In the conventional filtering, it is determined that each pixel block formed of a pixel to be processed and surrounding pixels contains an edge. A pixel block is selected from which noise is to be removed and noise removal is performed.
The conventional filtering is capable of identifying only local characteristics if the pixel block is small. That is, the size of the pixel block substantially affects filter performance. In proportion to the size of the pixel block, stored filter coefficients and operations such as the multiplication of the filter coefficients increase. Accordingly, the conventional filtering is not capable of increasing the filter performance while suppressing an increase in operations and stored data related to the filtering.
A general architecture that implements the various features of the invention will now be described with reference to the drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the invention and not to limit the scope of the invention.
Various embodiments according to the invention will be described hereinafter with reference to the accompanying drawings. In general, according to one embodiment of the invention, an image processing apparatus comprises a storage module, a calculator, a converter, and a filter. The storage module is configured to store a filter coefficient corresponding to a first feature value indicating an image structure of a first pixel block of a predetermined size comprising a plurality of pixels. The calculator is configured to calculate a second feature value indicating an image structure of a second pixel block comprising a target pixel to be processed and pixels surrounding the target pixel in an input image. The second pixel block is larger than the first pixel block. The converter is configured to convert the second feature value to the first feature value indicating the image structure corresponding to the first pixel block with the target pixel at the center. The filter is configured to perform filtering on the first pixel block with the target pixel at the center using the filter coefficient.
According to another embodiment of the invention, a display device comprises a storage module, a calculator, a converter, a filter, and a display module. The storage module is configured to store a filter coefficient corresponding to a first feature value indicating an image structure of a first pixel block of a predetermined size comprising a plurality of pixels. The calculator is configured to calculate a second feature value indicating an image structure of a second pixel block comprising a target pixel to be processed and pixels surrounding the target pixel in an input image. The second pixel block is larger than the first pixel block. The converter is configured to convert the second feature value to the first feature value indicating the image structure corresponding to the first pixel block with the target pixel at the center. The filter is configured to perform filtering on the first pixel block with the target pixel at the center using the filter coefficient and output an output image obtained by filtering the input image. The display module is configured to display the output image.
According to still another embodiment of the invention, there is provided an image processing method applied to an image processing apparatus comprising a storage module configured to store a filter coefficient corresponding to a first feature value indicating an image structure of a first pixel block of a predetermined size comprising a plurality of pixels. The information processing method comprises: a calculator calculating a second feature value indicating an image structure of a second pixel block comprising a target pixel to be processed and pixels surrounding the target pixel in an input image, the second pixel block being larger than the first pixel block; a converter converting the second feature value to the first feature value indicating the image structure corresponding to the first pixel block with the target pixel at the center; and a filter performing filtering on the first pixel block with the target pixel at the center using the filter coefficient.
As illustrated in
In the noise removal of the embodiment, a separate histogram for each direction (hereinafter, “orientation histogram”) related to a pixel gradient (a differential value of pixels) in a pixel block is used as a feature value of the pixel block. As illustrated in
The template table storage module 20 stores in advance a template table (a lookup table) that stores filter coefficients corresponding to various forms of the orientation histogram. More specifically, the template table storage module 20 stores filter coefficients each corresponding to an orientation histogram as a feature value indicating the image structure of a pixel block in units of pixel blocks of a predetermined size (first pixel block, which will be described later) formed of a plurality of pixels. The template table storage module 20 refers to the template table and outputs a filter coefficient corresponding to an orientation histogram generated for each pixel block by the histogram generator 10 to the filtering module 40.
The filter coefficient stored in the template table storage module 20 may be generated, for example, by obtaining a regression curve (curved surface model) fitted to a plurality of pixels (kernel) with a pixel to be filtered as a center pixel (H. Takeda, S. Farsiu, and P. Milanfar “Kernel Regression for Image Processing and Reconstruction”, IEEE Trans. Image Proc., Vol. 16, No. 2, pp. 349-366, 2007). By generating a filter coefficient equivalent to the regression curve fitting and associating the filter coefficient with an orientation histogram, it is possible to implement filtering achieving both sharpness and noise removal.
The edge parameter calculator 30 calculates an edge parameter indicating the direction, intensity, and sharpness of an edge contained in each pixel block. The filtering module 40 performs filtering on an input image and outputs the image from which noise has been removed. More specifically, based on a filter coefficient from the template table storage module 20 and an edge parameter calculated by the edge parameter calculator 30, the filtering module 40 performs convolution operation using the filter coefficient with respect to each pixel block.
The histogram generator 10 will now be described in detail.
The orientation histogram calculator 11 calculates an orientation histogram of a pixel block (second pixel block) larger than a pixel block (first pixel block) to be filtered using a filter coefficient. The orientation histogram converter 12 converts (normalizes) the orientation histogram calculated for the second pixel block to an orientation histogram corresponding to the first pixel block.
As illustrated in
Thereafter, the histogram generator 10 determines whether an orientation histogram is calculated for all pixel blocks of pixels of an input image (S13). When an orientation histogram has been calculated for all the pixel blocks (Yes at S13), the process ends. On the other hand, when an orientation histogram has not yet been calculated for all the pixel blocks (No at S13), the process returns to S11 to calculate an orientation histogram of a pixel block for which an orientation histogram has not yet been calculated.
Generally, as the pixel block to be filtered using a filter coefficient is smaller, the template table stored in the template table storage module 20 can be smaller and the convolution operation can be reduced at the time of filtering. However, as the pixel block is smaller, only local characteristics can be identified in an input image. For example, if an edge boundary overlaps the boundary between pixel blocks, the edge shape cannot be accurately determined in a small pixel block and an appropriate filter coefficient cannot be selected. As a result, when a pixel block is small, the quality of an output image after filtering degrades.
The histogram generator 10 identifies characteristics of an input image in the second pixel block B2 larger than the first pixel block B1. Accordingly, the histogram generator 10 is capable of generating an orientation histogram indicating the characteristics accurately and thereby increasing the filter performance. Besides, the histogram generator 10 converts an orientation histogram calculated for the second pixel block B2 into an orientation histogram corresponding to the first pixel block B1. This prevents an increase in the required memory capacity of the template table storage module 20 and the operation amount at the time of filtering.
If the first pixel block B1 has n pixels both vertically and horizontally from the center pixel and is in a size of (2n+1)×(2n+1) pixels, the second pixel block B2 may have 2n pixels both vertically and horizontally from the center pixel and be in a size of (4n+1)×(4n+1) pixels (n: a natural number not including 0). When the first pixel block B1 and the second pixel block B2 satisfy such a relationship, by increasing the value of n, the ratio of areas between the first pixel block B1 and the second pixel block B2 can be approximated to 1:4. This facilitates the normalization operation.
Further, if the first pixel block has n pixels both vertically and horizontally from the center pixel and is in a size of (2n+1)×(2n+1) pixels, the second pixel block B2 may be in a size of 8 m×8 m pixels (n, m: both natural numbers satisfying the relationship 2n+1<8 m). When the first pixel block B1 and the second pixel block B2 satisfy such a relationship, a central processing unit (CPU), a digital signal processor (DSP), and the like that handle data in multiples of 8 bits can efficiently calculate an orientation histogram.
The filtering module 40 will be described in detail below.
The multi ε filter 41 performs ε filtering using multiple thresholds ε (hereinafter, “multi ε filtering”) with respect to each pixel block (first pixel block) to be filtered of a pixel in an input image. In the ε filtering, the multi ε filter 41 compares an absolute difference between a pixel to be processed (center pixel) and each surrounding pixel in a pixel block with the threshold ε, and replaces the pixel value of a surrounding pixel with an absolute difference exceeding the threshold ε by that of the center pixel. By the multi ε filtering using multiple thresholds ε, the multi ε filter 41 performs such replacement of pixel values in stages.
On the other hand, the multi ε filter 41 of the embodiment mixes the pixel value of the center pixel with the pixel values of surrounding pixels in stages using a plurality of thresholds ε. With this, even at a portion where pixel values vary largely such as at an edge, pixel value variation after filtering can be smooth. In addition, the replacement using the thresholds ε and the calculation of the average can be performed at a high speed by the SIMD operation or the like.
On the other hand, if the absolute difference does not exceed the threshold ε1 (No at S21), the multi ε filter 41 determines whether the absolute difference between the center pixel and the surrounding pixel exceeds the threshold ε0 (S23). If the absolute difference exceeds the threshold ε0 (Yes at S23), the multi ε filter 41 replaces the pixel value of the surrounding pixel with the average of the pixel values of the center pixel and the surrounding pixel (S24). Then, the process moves to S25. On the other hand, if the absolute difference does not exceed the threshold ε0 (No at S23), the multi ε filter 41 leaves the pixel value of the surrounding pixel as original, and the process moves to S25.
The multi ε filter 41 determines whether the multi ε filtering has been performed for all pixel blocks corresponding to all pixels of the input image (S25). If the multi ε filtering has been performed for all the pixel blocks corresponding to all the pixels (Yes at S25), the process ends. If not (No at S25), the process returns to S21 to perform the multi ε filtering on a pixel block of a pixel on which the multi ε filtering is yet to be performed.
As illustrated in
The switches 43 and 44 switch a processing route for each pixel in an image filtered by the coefficient filter 42 based on the edge parameter indicating the direction, intensity, and sharpness of an edge calculated by the edge parameter calculator 30. More specifically, if the value of the edge parameter (for example, intensity, sharpness, or the like of an edge) is sufficiently small and smaller than a preset value and a pixel block to be filtered has a smooth image structure, the switches 43 and 44 switch the processing route so that the pixel block is processed by the large area ε filter 45 and the large area filter 46. On the other hand, if the value of the edge parameter exceeds the preset value and a pixel block to be filtered has an image structure of an edge or a corner, the switches 43 and 44 switch the processing route so that the pixel block is output as pixels of an output image without being processed by the large area ε filter 45 and the large area filter 46.
The large area ε filter 45 performs ε filtering on each pixel of a third pixel block (large area pixel block) larger than the first pixel block as a processing range (hereinafter, “large area ε filtering”). More specifically, in the large area ε filtering, with a pixel to be processed as a center pixel G1, a third pixel block B3 larger than the first pixel block B1 is set as a processing range as illustrated in
The large areas filtering may be the multi ε filtering. However, since the large area ε filter 45 performs the filtering on a pixel having a smooth image structure, the large area ε filtering is preferably simple ε filtering using one threshold ε for simplification of the processing. In view of this, the large area ε filtering of the embodiment may be simple ε filtering using one threshold C.
The large area filter 46 performs smoothing (large area filtering) using a mean filter on each pixel block (third pixel block) on which the large area ε filter 45 has performed the large area ε filtering. More specifically, the large area filter 46 averages pixel values of pixels in a pixel block.
With only the multi ε filter 41 and the coefficient filter 42 that remove noise from the first pixel block B1, an area having a smooth image structure may not be sufficiently smoothed. If the size of the first pixel block B1 is increased to handle this, it is necessary to increase the size of the template table stored in the template table storage module 20. This causes an increase in the required memory capacity of the template table storage module 20 and the operation amount of the coefficient filter 42 at the time of filtering.
Accordingly, in the embodiment, the switches 43 and 44 switch the processing route so that the large area ε filter 45 and the large area filter 46 process an area having a smooth image structure. With this, the large area filtering is performed on the third pixel block B3 larger than the first pixel block B1. Thus, more efficient filtering can be performed on an area having a smooth image structure, and image quality after the filtering can be increased. Besides, while the large area filtering is performed on pixels more than those of the first pixel block B1, the processing can be performed with the same or less operation amount than the amount of operation (multiplication related to convolution operation) of the coefficient filter 42 that increases in the case of filtering on the first pixel block B1 having an increased size.
If the first pixel block B1 has n pixels both vertically and horizontally from the center pixel and is in a size of (2n+1)×(2n+1) pixels, the third pixel block B3 may have 2n pixels both vertically and horizontally from the center pixel and be in a size of (4n+1)×(4n+1) pixels (n: a natural number not including 0).
Further, if the first pixel block 31 has n pixels both vertically and horizontally from the center pixel and is in a size of (2n+1)×(2n+1) pixels, the third pixel block 33 may be in a size of 8 m×8 m pixels (n, m: both natural numbers satisfying the relationship 2n+1<8 m). When the first pixel block B1 and the third pixel block B3 satisfy such a relationship, a CPU, a DSP, and the like that handle data in multiples of 8 bits can efficiently perform the large area filtering on the third pixel block B3.
When the intensity, sharpness, or the like of the edge is sufficiently small (Yes at S31), the large area ε filter 45 performs the large area ε filtering on the predetermined pixel (S32), and the large area filter 46 performs the large area filtering on the predetermined pixel). Then, the process moves to S34. On the other hand, when the intensity, sharpness, or the like of the edge is not sufficiently small (No at S31), the process moves to S34 without the large area ε filtering and the large area filtering on the predetermined pixel.
The filtering module 40 determines whether the processing has been performed for all pixels in the image filtered by the coefficient filter 42 (S34). If the processing has been performed for all the pixels (Yes at S34), the process ends. If not, the process returns to S31 to perform the processing on a predetermined pixel on which the processing is yet to be performed.
The CPU 101 uses a predetermined area in the RAM 105 as a work area, and executes various computer programs stored in advance in the ROM 104 or the like to implement various types of processing. The CPU 101 controls the overall operation of the computer 100. Further, the CPU 101 executes a computer program stored in advance in the ROM 104 or the like to implement the image processing method of the embodiment.
The operation module 102 comprises various types of input keys. The operation module 102 receives information input by the user as an input signal and outputs it to the CPU 101.
The display module 103 comprises a display panel such as a liquid crystal display (LCD) panel or the like to display various types of information, an output image processed as described above, and the like based on a display signal from the CPU 101. The display module 103 may be integrated with the operation module 102 to form a touch panel.
The ROM 104 is a nonvolatile memory that stores various types of setting information, computer programs related to the control of the computer 100, and the like. The RAM 105 is a storage medium such as a synchronous dynamic random access memory (SDRAM). The RAM 105 provides the work area to the CPU 101 and functions as a buffer.
The signal input module 106 is an interface that receives electrical signals of a still image, video, sound, and the like, and outputs the signals to the CPU 101. The signal input module 106 may be a communication interface to a broadcast program receiver (tuner), the Internet, and the like.
The storage module 107 comprises a magnetic or optical recording medium. Under the control of the CPU 101, the storage module 107 stores data such as a still image, video, sound, and the like received through the signal input module 106.
The image processing program executed by the CPU 101 may be provided to the computer as being stored in the ROM or the like. The image processing program may also be provided to the computer as being stored in a computer-readable storage medium, such as a compact disc-read only memory (CD-ROM), a flexible disk (FD), a compact disc recordable (CD-R), and a digital versatile disc (DVD), as a file in an installable or executable format.
The image processing program may also be stored in a computer connected via a network such as the Internet so that it can be downloaded therefrom via the network. Further, the display processing program may also be provide or distributed via a network such as the Internet.
A description will be given of a modification of the filtering module 40.
The switches 43a and 44a switch a processing route for each pixel in an input image based on an edge parameter indicating the direction, intensity, and sharpness of an edge calculated by the edge parameter calculator 30. More specifically, if the value of the edge parameter (for example, intensity, sharpness, or the like of an edge) is sufficiently small and smaller than a preset value and a pixel block to be filtered has a smooth image structure, the switches 43a and 44a switch the processing route so that the pixel block is processed by the large area ε filter 45 and the large area filter 46. On the other hand, if the value of the edge parameter exceeds the preset value and a pixel block to be filtered has an image structure of an edge or a corner, the switches 43a and 44a switch the processing route so that the pixel block is processed by the multi ε filter 41 and the coefficient filter 42.
In an area of an input image having a smooth image structure, noise removal effect may be small and the large area filtering may suffice for noise removal. In such a case, the filtering module 40a switches the processing route to perform efficient filtering without performing less efficient filtering. Moreover, the switching of the processing route enables an appropriate ε filter to be selected. More specifically, the large area ε filtering using one threshold ε suitable for efficient filtering is selected for an area having a smooth image structure, while the multi ε filtering suitable for the coefficient filter 42 to perform appropriate filtering is selected for an area having an image structure of an edge or a corner.
The various modules of the systems described herein can be implemented as software applications, hardware and/or software modules, or components on one or more computers, such as servers. While the various modules are illustrated separately, they may share some or all of the same underlying logic or code.
While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2009-217806 | Sep 2009 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
5892592 | Adachi et al. | Apr 1999 | A |
6987886 | Okubo et al. | Jan 2006 | B1 |
20060078220 | Okubo et al. | Apr 2006 | A1 |
20100232697 | Mishima et al. | Sep 2010 | A1 |
Number | Date | Country |
---|---|---|
H07-023227 | Jan 1995 | JP |
08-125857 | May 1996 | JP |
2001-251517 | Sep 2001 | JP |
2008-153812 | Jul 2008 | JP |
Number | Date | Country | |
---|---|---|---|
20110069883 A1 | Mar 2011 | US |