-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathforensics_3_3.html
More file actions
325 lines (276 loc) · 16 KB
/
forensics_3_3.html
File metadata and controls
325 lines (276 loc) · 16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="HandheldFriendly" content="True" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow" />
<link href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400;0,700;1,400&family=Source+Sans+Pro:ital,wght@0,300;0,400;0,700;1,400&display=swap" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/theme/stylesheet/style.min.css">
<link id="pygments-light-theme" rel="stylesheet" type="text/css"
href="/theme/pygments/github.min.css">
<script src="/theme/tipuesearch/jquery.min.js"></script>
<script src="/theme/tipuesearch/tipuesearch.min.js"></script>
<script src="/theme/tipuesearch/tipuesearch.min.js"></script>
<script src="/theme/tipuesearch/tipuesearch_set.min.js"></script>
<script src="/tipuesearch_content.js"></script>
<link rel="stylesheet" href="/theme/tipuesearch/tipuesearch.min.css" />
<link rel="stylesheet" type="text/css" href="/theme/font-awesome/css/fontawesome.css">
<link rel="stylesheet" type="text/css" href="/theme/font-awesome/css/brands.css">
<link rel="stylesheet" type="text/css" href="/theme/font-awesome/css/solid.css">
<link href="/feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="R08UST's Blog Atom">
<link rel="shortcut icon" href="/images/profile/Favicon.ico" type="image/x-icon">
<link rel="icon" href="/images/profile/Favicon.ico" type="image/x-icon">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8EL1GE1H84"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8EL1GE1H84');
</script>
<!-- End of Global site tag (gtag.js) - Google Analytics -->
<!-- Chrome, Firefox OS and Opera -->
<meta name="theme-color" content="#333">
<!-- Windows Phone -->
<meta name="msapplication-navbutton-color" content="#333">
<!-- iOS Safari -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<!-- Microsoft EDGE -->
<meta name="msapplication-TileColor" content="#333">
<meta name="author" content="R08UST" />
<meta name="description" content="缩略图 在JPEG文件格式中, 会在头部嵌入经过滤波,对比度调整,压缩的缩略图.这 些特定的操作就导致了不同的相机厂商或软件厂商的细微差异。 设一个原图为\(f(x, y)\),那么一个图像经过下面6步骤进行制作 裁剪/填充 预滤波 降采样 对比度 亮度调整 JEPG压缩 裁剪/填充 当缩略图与原图的分辨率比例不相同时, 需要对图像进行裁剪/填充处理. 这一阶段会产生四个参数\(c_l, c_r, c_t, c_b\)分别表示左右上下的裁剪/填充系数 抽象预滤波, 降采样, 对比度以及亮度调整 完成裁剪/填充操作后, 后续的四个操作可以将其抽象为一组模型 $$ t(x, y) = \alpha(D\{\hat{f}(x, y) * h_1(x, y)\} * h_2 …" />
<meta name="keywords" content="Book, Forensics, Security, ComputerVision">
<meta property="og:site_name" content="R08UST's Blog"/>
<meta property="og:title" content="数字图像取证 - 基于像素的取证 3"/>
<meta property="og:description" content="缩略图 在JPEG文件格式中, 会在头部嵌入经过滤波,对比度调整,压缩的缩略图.这 些特定的操作就导致了不同的相机厂商或软件厂商的细微差异。 设一个原图为\(f(x, y)\),那么一个图像经过下面6步骤进行制作 裁剪/填充 预滤波 降采样 对比度 亮度调整 JEPG压缩 裁剪/填充 当缩略图与原图的分辨率比例不相同时, 需要对图像进行裁剪/填充处理. 这一阶段会产生四个参数\(c_l, c_r, c_t, c_b\)分别表示左右上下的裁剪/填充系数 抽象预滤波, 降采样, 对比度以及亮度调整 完成裁剪/填充操作后, 后续的四个操作可以将其抽象为一组模型 $$ t(x, y) = \alpha(D\{\hat{f}(x, y) * h_1(x, y)\} * h_2 …"/>
<meta property="og:locale" content="en_US"/>
<meta property="og:url" content="/forensics_3_3.html"/>
<meta property="og:type" content="article"/>
<meta property="article:published_time" content="2021-02-25 00:00:00+08:00"/>
<meta property="article:modified_time" content=""/>
<meta property="article:author" content="/author/r08ust.html">
<meta property="article:section" content="Digital Image Forensics"/>
<meta property="article:tag" content="Book"/>
<meta property="article:tag" content="Forensics"/>
<meta property="article:tag" content="Security"/>
<meta property="article:tag" content="ComputerVision"/>
<meta property="og:image" content="/images/profile/profile.jpg">
<title>R08UST's Blog – 数字图像取证 - 基于像素的取证 3</title>
</head>
<body class="light-theme">
<aside>
<div>
<a href="">
<img src="/images/profile/profile.jpg" alt="" title="">
</a>
<h1>
<a href=""></a>
</h1>
<p>Security & AI Developer</p>
<form class="navbar-search" action="/search.html" role="search">
<input type="text" name="q" id="tipue_search_input" placeholder="Search...">
</form>
<ul class="social">
<li>
<a class="sc-linkedin" href="https://www.linkedin.com/in/%E5%AE%B6%E7%90%AA-%E8%92%8B-171328175/" target="_blank">
<i class="fab fa-linkedin"></i>
</a>
</li>
<li>
<a class="sc-github" href="https://github.com/r08ust" target="_blank">
<i class="fab fa-github"></i>
</a>
</li>
</ul>
</div>
</aside>
<main>
<nav>
<a href="">Home</a>
<a href="/index.html">MainPage</a>
<a href="/archives.html">Archives</a>
<a href="/categories.html">Categories</a>
<a href="/tags.html">Tags</a>
<a href="/feeds/all.atom.xml">Atom</a>
</nav>
<article class="single">
<header>
<h1 id="forensics_3_3">数字图像取证 - 基于像素的取证 3</h1>
<p>
Posted on Thu 25 February 2021 in <a href="/category/digital-image-forensics.html">Digital Image Forensics</a>
• 1 min read
</p>
</header>
<div>
<h2>缩略图</h2>
<p>在JPEG文件格式中, 会在头部嵌入经过滤波,对比度调整,压缩的缩略图.这 些特定的操作就导致了不同的相机厂商或软件厂商的细微差异。
设一个原图为<span class="math">\(f(x, y)\)</span>,那么一个图像经过下面6步骤进行制作</p>
<ol>
<li>裁剪/填充</li>
<li>预滤波</li>
<li>降采样</li>
<li>对比度</li>
<li>亮度调整</li>
<li>JEPG压缩</li>
</ol>
<h2>裁剪/填充</h2>
<p>当缩略图与原图的分辨率比例不相同时, 需要对图像进行裁剪/填充处理. 这一阶段会产生四个参数<span class="math">\(c_l, c_r, c_t, c_b\)</span>分别表示左右上下的裁剪/填充系数</p>
<h2>抽象预滤波, 降采样, 对比度以及亮度调整</h2>
<p>完成裁剪/填充操作后, 后续的四个操作可以将其抽象为一组模型
</p>
<div class="math">$$
t(x, y) = \alpha(D\{\hat{f}(x, y) * h_1(x, y)\} * h_2(x, y)) + \beta
$$</div>
<p>
其中<span class="math">\(t(x, y)\)</span>是缩略图,<span class="math">\(D\)</span>表示降采样操作, <span class="math">\(h_1\)</span>为预滤波, <span class="math">\(h_2\)</span>为后滤波(可选, 一般用于锐化处理), <span class="math">\(*\)</span>为卷积, <span class="math">\(\alpha, \beta\)</span>则是对比度系数以及亮度系数.为了简化模型, 做出如下假设 </p>
<ol>
<li>预滤波器为圆对称高斯模型, <span class="math">\(exp(-(x^2 + y^2)/\theta^2), 其中\)</span>\theta$为宽度.</li>
<li>预滤波器是单元和.</li>
<li>后滤波器的大小为3x3.</li>
<li>后滤波器是对称的, 即<span class="math">\((h_2(x, y) = h_2(-x, y),h_2(x, y) = h_2(x, -y))\)</span>. 产生如下形式的滤波器(a b a; b c b; a b a)</li>
<li>后滤波器也是单元和, 约束$c = 1 - (4a + 4b)</li>
</ol>
<p>在以上的约束下, 缩略图模型将会产生11个参数, 2个缩略图尺寸参数, 4个填充/裁剪参数, 1个预滤波参数<span class="math">\(\theta\)</span>, 2个后滤波参数<span class="math">\(a, b\)</span>以及对比度参数<span class="math">\(\alpha\)</span>和亮度参数<span class="math">\(\beta\)</span>. 考虑到JPEG图像格式的特有参数128个, 即2个8x8的对亮度以及色彩通道的量化表. 故对于一个Jpeg文件总共可以产生139个参数对其进行描述.</p>
<h2>求解剪切/填充参数</h2>
<p>缩略图处理流程中剪切/填充的边界正相关于全尺寸图像的分辨率(已知), 但具体的比例仍然需要估算. 首先设定一个初始的符合分辨率比例关系的初始缩略图<span class="math">\(\hat{f}_0(x, y)\)</span>. 故初始缩率图可以被建模为
</p>
<div class="math">$$
\hat{t}_0(x, y) = D\{\hat{f}(x, y)\}
$$</div>
<p>
其中<span class="math">\(\hat{f}_0(x, y)\)</span>为原始图像, D为降采样操作, 其比例为<span class="math">\(max(N_x/n_x, N_y/n_y)\)</span>, <span class="math">\((N_x, N_y)\)</span>以及<span class="math">\((n_x, n_y)\)</span>为图像和缩略图的尺寸. 随后初始缩率图经过各项异性(各个维度变换系数不相同)的缩放(scaling)和变换(translation)得到提取出的缩略图<span class="math">\(t(x, y)\)</span>
</p>
<div class="math">$$
t(x, y) = \hat{t}(s_xx + \delta_x, s_yy + \delta_y)
$$</div>
<p>
其中<span class="math">\((s_xx, s_yy), (\delta_x, \delta_y)\)</span>分别为缩放和变换系数.
在灰度图上基于粗粒度至细粒度的差分匹配算法(coarse-to-fine differential registration)求解上述参数</p>
<h2>求解滤波器以及对比度和亮度参数</h2>
<p>求解各滤波器以及对比度和亮度参数, 可以通过减少真实图像与预估图像之间的误差进行求解. 即
</p>
<div class="math">$$
E_1(h_1, h_2) = \sum_{x, y}[t(x, y) - \alpha(D\{\hat{f}(x, y) * h_1(x, y)\} * h_2(x, y)) - \beta]^2
$$</div>
<p>
但上述公式仅根据预滤波和后滤波得出, 无法求解对比度以及亮度. 故对于亮度与对比度系数, 给定滤波器的参数, 定义误差函数为
</p>
<div class="math">$$
E_2(\alpha, \beta) = \sum_{x, y}[t(x, y) - \alpha(D\{\hat{t}_h(x, y) + \beta)]^2
$$</div>
<p>
其中<span class="math">\(\hat{t}_h(x, y) = D\{\hat{f}(x, y) * h_1(x, y)\} * h_2(x, y))\)</span>
利用最小二乘法即可<span class="math">\(E_2\)</span>进行求解. 对于<span class="math">\(E_1\)</span>则需要使用暴力搜索求解最小值, 或使用Nelder-Mead 最小化算法加速求解过程.
在实验中, 作者发现求解<span class="math">\(E_1\)</span>时在傅里叶域中效果会更好, 即最小化
</p>
<div class="math">$$
E_1(h_1, h_2) = \sum_{\omega_x, \omega_y}[||T(\omega_x, \omega_y)|| - ||\hat{T}(\omega_x, \omega_y)||]^2
$$</div>
<p>
其中<span class="math">\(T(\cdot)\)</span>表示傅里叶变换后的真实缩率图<span class="math">\(t(\cdot)\)</span>,<span class="math">\(\hat{T}(\cdot)\)</span>表示傅里叶变换后的预估缩率图<span class="math">\(D\{\hat{f}(x, y) * h_1(x, y)\} * h_2(x, y))\)</span>, <span class="math">\(||\cdot||\)</span>表示傅里叶变换的量级. 由于经过<span class="math">\(
t(x, y) = \hat{t}(s_xx + \delta_x, s_yy + \delta_y)\)</span>的初始校准, 低频特征时十分均衡的, 故该损失函数在高频特征上进行计算</p>
<p>最后是, 128个量化表系数可以直接从量化表中获取. </p>
<h2>参考文档</h2>
<p>1.E. Kee and H. Farid. Digital image authentication from thumbnails. In SPIE Symposium on Electronic Imaging, San Jose, CA, 2010.</p>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';
var configscript = document.createElement('script');
configscript.type = 'text/x-mathjax-config';
configscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" availableFonts: ['STIX', 'TeX']," +
" preferredFont: 'STIX'," +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
"}); " +
"if ('default' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>
</div>
<div class="tag-cloud">
<p>
<a href="/tag/book.html">Book</a>
<a href="/tag/forensics.html">Forensics</a>
<a href="/tag/security.html">Security</a>
<a href="/tag/computervision.html">ComputerVision</a>
</p>
</div>
<div class="neighbors">
<a class="btn float-left" href="/forensics_3_2.html" title="数字图像取证 - 基于像素的取证 2">
<i class="fa fa-angle-left"></i> Previous Post
</a>
<a class="btn float-right" href="/forensics_4_1.html" title="数字图像取证 - 基于统计的取证 4">
Next Post <i class="fa fa-angle-right"></i>
</a>
</div>
</article>
<footer>
<p>© 2021 </p>
<p>
Built with <a href="http://getpelican.com" target="_blank">Pelican</a> using <a href="http://bit.ly/flex-pelican" target="_blank">Flex</a> theme
</p> </footer>
</main>
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "Blog",
"name": " R08UST's Blog ",
"url" : "",
"image": "/images/profile/profile.jpg",
"description": ""
}
</script>
<script>
$(document).ready(function() {
$('#tipue_search_input').tipuesearch();
});
</script>
</body>
</html>