IP Library Granted Patent US 7,023,576
Granted Patent B1
US 7,023,576 · App. 09/567,278 · Granted Apr 4, 2006

Method and an apparatus for elimination of color Moiré

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,023,576
App. No.
09/567,278
Granted
Apr 4, 2006
Kind
B1
Abstract

A digital image processing method for eliminating Moiré in a digital image divided into pixels holding pixel component values includes selecting a first pixel and defining a pixel window around the selected first pixel. Then, a set of pixels are identified which consist of pixels within the window that have pixel component values within a pixel component value range that is related to the selected first pixel. A pixel component value is calculated based on corresponding pixel component values of pixels in the set of pixels and then this calculated pixel component value is allocated to the selected first pixel.

Claims (1244)

1. A digital image processing method of eliminating Moiré in a pixilated digital image wherein each pixel is associated with at least a first pixel component value and a second pixel component value of different type, the method comprising:

selecting a pixel;

defining a pixel window around the selected pixel;

identifying a set of pixels consisting of pixels within the pixel window having a first pixel component value within a range that is related to the first pixel component value of the selected pixel;

calculating a new second pixel component value for the selected pixel using corresponding second pixel component values of pixels in the set of pixels; and

allocating the calculated new second pixel component value to the selected pixel.

2. A method according to claim 1 , wherein said calculating comprises calculating a weighted average of second pixel component values of pixels in the set of pixels.

3. A method according to claim 2 , wherein weights of the weighted average are identical to one.

4. A method according to claim 2 , further comprising calculating hue values for a selected pixel (x 0 ,y 0 ) in the CIELAB color space:

a

*

=

500

(

(

x

x

N

)

1

3

-

(

y

y

N

)

1

3

)

b

*

=

200

(

(

y

y

N

)

1

3

-

(

z

z

N

)

1

3

)

(

x

y

z

)

=

M

_

_

(

r

g

b

)

;

(

x

N

y

N

z

N

)

=

M

_

_

(

255

255

255

)

M

_

_

=

(

0

,

431

0

,

342

0

,

178

0

,

222

0

,

707

0

,

071

0

,

020

0

,

130

0

,

939

)

and for a macro square centered around the selected pixel with a first side length, calculating:

VarMak ( x 0 ,y 0 )= std.dev ( MDC ab ( x i ,y i ))

and for a micro square centered around the selected pixel with a second side length, calculating:

VarMik ( x 0 ,y 0 )= std.dev ( MDC ab ( x i ,y i )),

wherein:

MDC

ab

(

x

0

,

y

0

)

=

1

N

(

x

0

,

y

0

,

d

)

i

=

1

N

(

x

0

,

y

0

,

d

)

ΔC

ab

i

Δ C αb =√{square root over ((α*( x 0 ,y 0 )−α( x i ,y i )) 2 +( b *( x 0 ,y 0 )− b *( x i ,y i )) 2 )}{square root over ((α*( x 0 ,y 0 )−α( x i ,y i )) 2 +( b *( x 0 ,y 0 )− b *( x i ,y i )) 2 )}{square root over ((α*( x 0 ,y 0 )−α( x i ,y i )) 2 +( b *( x 0 ,y 0 )− b *( x i ,y i )) 2 )}{square root over ((α*( x 0 ,y 0 )−α( x i ,y i )) 2 +( b *( x 0 ,y 0 )− b *( x i ,y i )) 2 )}

and calculating a threshold value:

t

(

x

,

y

)

=

t

VarMak

(

x

,

y

)

VarMik

(

x

,

y

)

,

and setting a flag V c (x 0 ,y 0 ) is set according to the following:

V c ( x,y )=1 when VarMak ( x,y )< t ( x,y )

V c ( x,y )=0 otherwise.

5. A method according to claim 4 , further comprising substituting red and blue pixel component values of the selected pixel (x 0 ,y 0 ) with originally or interpolated pixel component values when the flag V c (x 0 ,y 0 ) is equal to zero.

6. A method according to claim 4 , wherein the first side length is 13, the second side length is 4, and t is 4.6.

7. A method according to claim 4 , further comprising:

for a selected pixel (x 0 ,y 0 ) calculating

k

1

=

(

2

-

1

-

1

-

1

2

-

1

-

1

-

1

2

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

2

=

(

-

1

2

-

1

-

1

2

-

1

-

1

2

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

3

=

(

-

1

-

1

2

-

1

2

-

1

2

-

1

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

4

=

(

-

1

-

1

-

1

2

2

2

-

1

-

1

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

and

std

.

dev

(

k

)

=

1

N

i

=

1

4

(

k

i

-

k

_

)

2

k

_

=

1

4

i

=

1

4

k

i

and setting a flag V s (x 0 ,y 0 ) to one when std.dev(k) is less than 2 and otherwise setting the flag V s (x 0 ,y 0 ) to zero;

substituting red and blue pixel component values of the selected pixel (x 0 ,y 0 ) with originally or interpolated pixel component values when the flag V s (x 0 ,y 0 ) is equal to zero; and

combining the flags V s (x 0 ,y 0 ) and V c (x 0 ,y 0 ) into a flag V(x 0 ,y 0 ) so that:

V ( x 0 ,y 0 )=1 when V c ( x 0 ,y 0 )=1 and V s ( x 0 ,y 0 )=1;

V ( x 0 ,y 0 )=0 otherwise,

and substituting red and blue pixel component values of the selected pixel (x 0 ,y 0 ) with the originally or interpolated pixel component values when the flag V(x 0 ,y 0 ) is equal to zero.

8. A method according to claim 1 , wherein the pixel window is centered around the selected pixel.

9. A method according to claim 1 , wherein the pixel window is a rectangle.

10. A method according to claim 9 , wherein the pixel window is a square.

11. A method according to claim 1 , further comprising:

for a selected pixel (x 0 ,y 0 ) calculating

k

1

=

(

2

-

1

-

1

-

1

2

-

1

-

1

-

1

2

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

2

=

(

-

1

2

-

1

-

1

2

-

1

-

1

2

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

3

=

(

-

1

-

1

2

-

1

2

-

1

2

-

1

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

k

4

=

(

-

1

-

1

-

1

2

2

2

-

1

-

1

-

1

)

*

(

g

(

x

-

1

,

y

-

1

)

g

(

x

0

,

y

-

1

)

g

(

x

1

,

y

-

1

)

g

(

x

-

1

,

y

0

)

g

(

x

0

,

y

0

)

g

(

x

1

,

y

0

)

g

(

x

-

1

,

y

1

)

g

(

x

0

,

y

1

)

g

(

x

1

,

y

1

)

)

and

std

.

dev

(

k

)

=

1

N

i

=

1

4

(

k

i

-

k

_

)

2

k

_

=

1

4

i

=

1

4

k

i

and setting a flag V s (x 0 ,y 0 ) to one when std.dev(k) is less than 2 and otherwise setting the flag to zero.

12. A method according to claim 11 , further comprising substituting red and blue pixel component values of the selected pixel (x 0 ,y 0 ) with originally or interpolated pixel component values when the flag V s (x 0 ,y 0 ) is equal to zero.

13. A method according to claim 1 , further comprising applying a smoothing filter along boundaries between regions of pixels with modified pixel values and pixels with recorded and interpolated values for elimination of an abrupt change from modified pixel values {overscore (r)} m , {overscore (b)} m to un-modified pixel values r, b across a boundary:

{overscore (r)} final ( x,y )=α{overscore (r)} m ( x,y )+(1−α) r ( x,y )

{overscore (b)} final ( x,y )=α{overscore (b)} m ( x,y )+(1−α) b ( x,y )

α

=

N

do

N

do

+

N

don

'

t

wherein N do is a number of pixels within a smoothing window with modified pixel values and N don't is a number of pixels within the smoothing window with un-modified pixel values.

14. A method according to claim 1 , further comprising:

selecting a second pixel; and

interpolating a color (A) value of the selected second pixel by calculating the color (A) value from color values of a selected set of pixels that are positioned adjacent to the selected second pixel, the influence of at least one pixel abutting the selected second pixel being significantly reduced whereby blurring of distinct features of the digital image is substantially avoided.

15. A method according to claim 14 , further comprising:

forming a first set of pixels that are positioned adjacent to the selected second pixel;

calculating a first variation value of color values of the pixels of the first set of pixels;

forming a second set of pixels that are positioned adjacent to the selected second pixel;

calculating a second variation value of color values of the pixels of the second set;

comparing the first and second variation values; and

calculating the color (A) value from color values of the set of pixels with the lowest variation value.

16. A method according to claim 15 , wherein color (B) values of the set of pixels with the lowest variation value are included in the calculation of the color (A) value.

17. A method according to claim 15 , wherein color (B) values are included in the calculation of variation values of the first and second set of pixels, respectively.

18. A method according to claim 17 , wherein each of said calculating variation values of the first and second set of pixels, respectively, comprises:

calculating the ratio between color (A) values and color (B) values of abutting pixels of the respective set of pixels;

calculating a mean value of the calculated ratios; and

calculating the variation value of the respective set of pixels as a sum of an absolute value of a difference between each of the ratios and the mean value.

19. A method according to claim 15 , wherein said calculating the color (A) value comprises:

calculating a weighted sum of color (B) values of the set of pixels with the lowest variation value;

calculating a weighted sum of color (A) values of the set of pixels with the lowest variation value; and

calculating the color (A) by multiplying a color (B) value of the selected second pixel with a ratio between the weighted sums of color (A) and color (B) values.

20. A method according to claim 14 , wherein the color (A) value is calculated form an arbitrary number of colors.

21. A method according to claim 14 , wherein the selected set of pixels comprises a plural number of selected sets of pixels.

22. A method according to claim 21 , wherein the selected sets of pixels are arranged in rows and columns parallel to rows and columns of the pixels in the image.

23. A method according to claim 21 , wherein the selected sets of pixels are arranged in rows at an angle of approximately 45 degrees relative to rows and columns of the pixels in the image.

24. A method according to claim 21 , wherein the selected sets of pixels are arranged in rows at an angle of approximately 45 degrees relative to rows and columns of the pixels in the image and in rows and columns parallel to the rows and columns of the pixels in the image.

25. A method according to claim 21 , wherein the selected sets of pixels are arranged in rows at an arbitrary angle relative to rows and columns of the pixels in the image.

26. A method according to claim 21 , wherein the number of selected sets of pixels is 4.

27. An image processing apparatus with a processor that is adapted for performing a method according to claim 1 .

28. An image recording system with a processor that is adapted for performing a method according to claim 1 .

29. A software program residing in a computer readable medium for performing a method according to claim 1 .

30. A data carrier residing in a computer readable medium for performing a method according to claim 1 .

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0001 →
CHANGE OF NAME Recorded Aug 21, 2009
From: PHASE ONE A/S
To: PHASE ONE SOFTWARE BUSINESS APS
Reel/Frame 023129/0740 →
CHANGE OF NAME Recorded Aug 21, 2009
From: PHASE ONE SOFTWARE BUSINESS ASP
To: CPH SOFTWARE BUSINESS APS
Reel/Frame 023129/0791 →
CHANGE OF NAME Recorded Aug 21, 2009
From: PHASE ONE SOFTWARE BUSINESS APS
To: CPH SOFTWARE BUSINESS APS
Reel/Frame 023129/0815 →
CHANGE OF NAME Recorded Jun 26, 2003
From: PHASE ONE DENMARK A/S
To: PHASE ONE A/S
Reel/Frame 016256/0097 →