Long Form Birth Certificate – The gory details – Part 4

Note: I am still working on Part 3, but this one was interesting enough to publish in advance. The PDF file contains one object which is in JPEG format. I decided to extract the JPEG image using pdf-parser.py and used jpegdump to extract the quantization tables and to my surprise they were identical. The Independent JPEG (IJG) group tables which are commonly used, are quite different, even when taking into account scaling. These tables are like fingerprints, especially when they do not match the standard tables. Too bad, I do not have an index of such tables, although tables for cameras exist.

Low frequency components are in the top left, and high frequency components in the bottom right. I was hoping to be able to recover the quality settings but they may not be very reliable if they are not based on the standard tables. The luminance table suggests a setting of 55 which is a medium setting but the variance is high suggesting deviation from the standard table.

offset $0 SOI
offset $2 DQT (length 67)
table 0 precision 8
  8    10    11    13    11     9    14    13
 12    13    16    15    14    17    22    36
 23    22    20    20    22    44    32    33
 26    36    52    46    55    54    51    46
 50    50    58    65    83    70    58    61
 78    62    50    50    72    98    73    78
 86    88    93    94    93    56    69   102
109   101    90   108    83    91    93    89

Standard IJG Luminance Quantization Table Q=100

 16    11    10    16    24    40    51    61 
 12    12    14    19    26    58    60    55 
 14    13    16    24    40    57    69    56 
 14    17    22    29    51    87    80    62 
 18    22    37    56    68   109   103    77 
 24    35    55    64    81   104   113    92 
 49    64    78    87   103   121   120   101 
 72    92    95    98   112   100   103    99

Approximate quality factor for qtable 0: 55 (scale 89.61, var 26.00)
offset $47 DQT (length 67)
table 1 precision 8

  8    10    11    13    11     9    14    13
 12    13    16    15    14    17    22    36
 23    22    20    20    22    44    32    33
 26    36    52    46    55    54    51    46
 50    50    58    65    83    70    58    61
 78    62    50    50    72    98    73    78
 86    88    93    94    93    56    69   102
109   101    90   108    83    91    93    89

Standard IJG Chrominance Quantization Table Q=100

 17    18    24    47    99    99    99    99    
 18    21    26    66    99    99    99    99    
 24    26    56    99    99    99    99    99    
 47    66    99    99    99    99    99    99    
 99    99    99    99    99    99    99    99    
 99    99    99    99    99    99    99    99    
 99    99    99    99    99    99    99    99    
 99    99    99    99    99    99    99    99

Approximate quality factor for qtable 1: 71 (scale 58.18, var 684.90)
offset $8c DHT (length 31)