A%20Parallel%20Algorithm%20for%20Hardware%20Implementation%20of%20Inverse%20Halftoning

About This Presentation
Title:

A%20Parallel%20Algorithm%20for%20Hardware%20Implementation%20of%20Inverse%20Halftoning

Description:

Halftone Image Inverse Halftone or grey-level image ... This pixel loss is compensated through replicating gray level values from the neighbors. ... –

Number of Views:51
Avg rating:3.0/5.0
Slides: 59
Provided by: umairfs
Category:

less

Transcript and Presenter's Notes

Title: A%20Parallel%20Algorithm%20for%20Hardware%20Implementation%20of%20Inverse%20Halftoning


1
A Parallel Algorithm for Hardware Implementation
of Inverse Halftoning
  • Umair F. Siddiqi1, Sadiq M. Sait1 Aamir A.
    Farooqui2
  • 1Department of Computer Engineering
  • King Fahd University of Petroleum Minerals,
    Dhahran 31261, Saudi Arabia
  • 2Synopsys Inc.
  • Synopsys Module Compiler, Mountain View
  • California, USA

2
Analog halftoning
  • The process of rendition of continuous tone
    pictures on media on which only two levels can be
    displayed.
  • The size of dots are adjusted according to the
    local print intensity.
  • When looked at a distance it gives the impression
    of the original picture.

3
Digital halftoning
  • In digital halftoning the input of the system is
    a grey-level image having more than two levels
    for example, 256 levels and the resulting image
    has only two levels.
  • The halftone image is comprised of zeros and ones
    but gives the impression of the original image
    from a distance.

4
Inverse halftoning
  • Inverse halftoning is the reconstruction of
    continuous tone picture (e.g. 256 levels) from
    its halftoned version.
  • The input to an inverse halftoning system in an
    image that consists of zeros and ones and output
    is an image in which each pixel have value from
    256 gray-levels.
  • Inverse Halftoning finds application in image
    compression, printed image processing, scaling,
    enhancement, etc.
  • Inverse halftoning can be for color images but we
    are concerned with gray-level images and their
    halftones.

5
Example of Inverse Halftoning
Halftone Image
Inverse Halftone or grey-level image
6
Demonstration of our Inverse halftoning algorithm
  • The next few slides show how inverse halftone
    operation is performed in our algorithm.

7
Lookup Table (LUT) based Inverse Halftone
operation
  • The Lookup Table (LUT) method proposed by Mese
    and Vaidyanathan is used for inverse halftone
    operation.
  • The LUT method uses a template 19pels to select
    pixels from the neighborhood of the pixel that is
    going to be inverse halftone.
  • This 19pels then goes into a LUT which compares
    the 19pels with its stored values and returns a
    gray-level for the input 19pels.

8
19pels Template
1 2 3 4 5
6 7 8 9 10
11 12 0 13 14
15 16 17
18
The pixel numbered 0 is the one going to be
inverse halftoned This pattern is associated with
each pixel that is to be inverse halftoned
9
Demonstration of LUT inverse halftoning
10
This is the first 19pels selected
11
This is the second 19pels selected
12
This is the third 19pels selected
13
This is the fourth 19pels selected
14
Our modification to LUT based Inverse Halftoning
15
Problem of parallel LUT inverse halftone operation
  • The LUT method uses one Lookup table that
    contains inverse halftone values for all 19pels
    that are obtained through training set of
    halftones of standard images.
  • To fetch parallel inverse halftone values of more
    than one 19pels we need to implement multiple
    copies of the LUT !

16
Our approach to parallel LUT inverse halftoning
  • The single large LUT has been divided into many
    Smaller LUTs (SLUTs).
  • Now more than one 19pels can fetch its inverse
    halftone value from a separate SLUT independent
    to other parallel 19pels.
  • Next problem is to develop a method to send
    incoming 19pels to separate SLUTs.

17
Method to distinguish 19pels from each other
  • The task to send many incoming 19pels to their
    separate SLUTs is accomplished by defining an
    operator over 19pels.
  • This operator is called Relative XOR Change
    (RXC).
  • When all incoming 19pels are operated through
    this operator they convert into distinguished
    values in the range of t to t, where t 19
    in our case, but it could be any random integer
    within a suitable range with respect to total
    number of SLUTs and hardware complexity.

18
Demonstration of RXC operation
19
RXC over gray-level halftones I
Gray-level 230
Corresponding halftone obtained through Floyd and
Steinberg Error Diffusion Method
20
RXC over gray-level halftones II
Gray-level 130
Corresponding halftone obtained through Floyd and
Steinberg Error Diffusion Method
21
Magnified look at the halftones I
Gray-level 210
Gray-level 130
Halftone shows no column-wise periodicity among
dots over small 19pels regions
Halftone shows column-wise periodicity among dots
over small 19pels regions
22
Magnified look at the halftones II
Gray-level 120
Portion of the halftone from image Boat
Halftone shows no periodicity among dots over
small 1D 19pels regions
Halftone shows no periodicity among dots over
small 1D 19pels regions
23
Behavior of RXC over Grey-level halftones
Gray level 130
Gray level 210
NON Periodic Vibratory Response
Periodic Vibratory Response
Halftones obtained through Floyd Steinberg
Error Diffusion Method
24
Representation of RXC values on number line
Periodic Vibratory Values
RXC values to be used in SLUT access are
calculated by adding the RXC to the RXC of the
previous 19pels That is RXC for SLUT of Pn
(Slut) RXC of Pn-1 RXC of Pn-2(n)
From the number line we can see that adding RXC
over previous values gives zero or constant
result, therefore, we need NOT periodic vibratory
response from RXC operator.
25
NOT Periodic Vibratory RXC Operator
  • The operator RXC has been defined that is simple
    to implement in hardware as well as gives NON
    periodic vibratory response over most of the gray
    levels from 0 to 255.
  • We have assumed that a gray level image is a
    composition of many gray levels and obtaining the
    performance of RXC over individual gray levels
    can give a clue about its performance on images.
  • This assumption is found to be correct in
    simulation results.

26
RXC Operator for Pn
  • Pn-1 19pels with the pixel 0 at position
    (row,col-1)
  • Pn 19pels with pixel 0 at position (row,col)
  • xor_1 XOR(Pn-1, Pn )
  • Magnitude of RXC RXC Number of Ones(xor_1)
  • Sign of RXC sgn(RXC) when Pn gt Pn-1
  • -
    when Pn lt Pn-1
  • Note pixel 0 is the one that is to be inverse
    halftoned

27
Parallel application of RXC
28
Development of parallel table access algorithm
with RXC
The addition of Slut values from previous pixels
simplifies the hardware design
29
Formal Algorithm
30
Simulation
  • The algorithm is implemented in MATLAB the
    performance and quality of inverse halftoning is
    estimated.
  • We assumed LUT inverse halftone operation to be
    ideal.
  • The simulation results show the quality loss with
    respect to original image that occurred in
    distribution of parallel 19pels to different
    SLUTs through RXC.
  • This pixel loss is compensated through
    replicating gray level values from the neighbors.

31
Sample Image I
peppers
PSNR 34.7880
32
Sample Image II
lena
PSNR 32.5685
33
Sample Image III
mandrill
PSNR 28.1264
34
Quality of inverse halftones
Image Halftone Algorithm pixel coverage w/o pixel compensation PSNR with pixel compensation
Boat FS ED 65.0864 30.3749
Clock FS ED 70.6667 30.1671
Peppers FS ED 68.9433 28.5484
Boat GN ED 63.7531 28.7139
Clock GN ED 69.8765 31.2554
Peppers GN ED 68.9509 29.0077
Boat EG ED 67.3086 32.1370
Clock EG ED 68.5926 29.9289
Peppers EG ED 69.9905 28.5483
35
Hardware Implementation
  • This section shows the hardware implementation of
    the proposed parallel algorithm in terms of block
    diagrams.
  • The specification of the hardware design is
  • Parallel Pixels to be inverse halftone n 15
  • Number of SLUTs 19

36
Two Blocks of hardware Implementation
  • The hardware system can be divided into two
    blocks
  • RXC and modulus operators
  • 19pels to gray-level decoders

37
System Block diagram
38
RXC and modulus operators
  • RXC and modulus operators components are
    responsible for the following tasks
  • Input 19pels Output SLUT numbers Slut
  • Accept 19pels from the halftone image and assign
    a sequence number to each entered 19pels.
  • Perform RXC operation on all 19pels.
  • Add the Slut value of the 19pels that has
    preceding sequence number to the current result.
  • Then take mod of the current result with a fixed
    number i.e. 19 in our case to obtain Slut value
    for the current 19pels.
  • The above three steps are pipelined so new 19pels
    are coming in while the current 19pels are in
    process.

39
RXC and modulus Block Diagram
RXC calculation for 19pels Pn
Pn-1 and Pn are two 19pels among all 19pels to be
inverse halftoned in parallel. Slut is the
Smaller LUT number where the concerned 19pels
should go to fetch its inverse halftone value.
40
Hardware Design of RXC and modulus Operator
  • The next slides can show the hardware design of
    RXC operator for a 19pels pattern named Pn with
    the following parameters
  • Parallel pixels to be inverse halftoned at a
    time 15
  • Total number of SLUTs 19, therefore, Slut is
    from 0 to 19.

41
Bit to Bit XOR
The figure shows bit-to-bit XOR of 19pels Pn and
Pn1
42
Addition of Number of ones in XOR result to
obtain RXC
43
Comparing of Pn and Pn1 to obtain sign(RXC)
44
Determination of Slut from RXC
45
Block diagram showing gray-level decoding process
46
Routing of a 19pels to 5th SLUT
47
Routing of a 19pels to 16th SLUT
48
Routing of a 19pels to 3rd SLUT
49
Routing of a 19pels to 17th SLUT
50
1p x 19p DEMUXi(i2)
51
19p x 1p MUXn(n16)
52
SLUTi(i16)
53
Method to generate contents of SLUT
  • The algorithm is applied on images in a training
    set and Sluts values are obtained.
  • The 19pels then placed in the SLUT given by the
    corresponding Slut value.

54
Properties of SLUTs
  • The SLUTs were developed using training set
    composed of FS ED halftone images of Boat and
    Peppers of size 256x256-pixels.
  • The size of one SLUT is found to be 2.5K entries
    .
  • The summation of entries in all 19 SLUTs comes to
    be 42.6K.
  • The size of LUT in single LUT method is 9.86K
    entries, however, if the single LUT method is
    implemented multiple times for 15 parallel pixels
    the total size could become 148K entries.
  • In this way, our method can provide 3.5 times
    decrease in lookup table size over single LUT
    based method.

55
Conclusion and Future Work
  • We have found that SLUT table size can be further
    reduced if we modify RXC operator.
  • The next few slides can show the modifications we
    intend to implement in RXC.

56
Modified RXC I
  • At present, RXC is a comparative operator that it
    gives values in comparison to the previous
    19pels.
  • This behavior of RXC can give different Slut
    values if some 19pels are replaced from the
    image.
  • Therefore, we are required to store same 19pels
    in more than one table.

57
Modified RXC II
  • Let us define a standard value for RXC
  • The value of 19pels at which the histogram of
    19pels present in training set images can be
    divided into two portions.
  • We find Slut value of each 19pels with respect to
    this standard value.
  • That way we can have almost uniform table size
    with no repetition of same value in different
    tables.

58
Example histogram
The mean 19pels 0111110100011100110
Write a Comment
User Comments (0)
About PowerShow.com