در این مطلب، ویدئو JPEG: الگوریتم در پایتون (قسمت 2) با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:16:30
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,030 –> 00:00:03,419
سلام من شاون هستم من چانگ هستم و به
2
00:00:03,419 –> 00:00:06,390
نرم افزار علوم خوش آمدید آخرین باری که
3
00:00:06,390 –> 00:00:08,550
در مورد جی پک صحبت کردیم و در مورد فضای دانشگاه صحبت کردیم
4
00:00:08,550 –> 00:00:11,990
که به آن
5
00:00:11,990 –> 00:00:14,820
کوانتیزاسیون و بلوک های فضای رنگی
6
00:00:14,820 –> 00:00:17,460
می گویند، بنابراین امروز قرار است چه کاری انجام دهیم، بنابراین امروز در
7
00:00:17,460 –> 00:00:18,690
واقع داریم سعی میکنیم همه
8
00:00:18,690 –> 00:00:20,430
آن قطعات را کنار هم بگذاریم و
9
00:00:20,430 –> 00:00:22,410
چیزی را در پایتون بسازیم که میتوانید به
10
00:00:22,410 –> 00:00:24,510
تنهایی انجام دهید، حتی شاید حدود
11
00:00:24,510 –> 00:00:27,810
چند ساعت در چند ساعت، بنابراین
12
00:00:27,810 –> 00:00:30,660
کد را مرور میکنیم بله، فکر نمیکنم
13
00:00:30,660 –> 00:00:32,250
واقعاً بخواهید چند ساعتی به من نگاه کن
14
00:00:32,250 –> 00:00:33,989
، کمی خسته میشویم،
15
00:00:33,989 –> 00:00:35,309
خب، بیایید این کار را انجام دهیم،
16
00:00:35,309 –> 00:00:39,390
تا شاون میتواند به
17
00:00:39,390 –> 00:00:42,510
ما بگویید که
18
00:00:42,510 –> 00:00:46,530
معماری کت در اینجا چگونه به نظر میرسد، بله،
19
00:00:46,530 –> 00:00:48,090
و جهتی که میرویم.
20
00:00:48,090 –> 00:00:50,100
در پایان، ما میخواهیم یک سری
21
00:00:50,100 –> 00:00:52,890
کدک داشته باشیم، بهطوریکه
22
00:00:52,890 –> 00:00:56,219
این لایهها یا پوستهها را داشته
23
00:00:56,219 –> 00:00:58,289
باشیم که هم یک ورودی و هم خروجی یا
24
00:00:58,289 –> 00:01:01,710
جفت رمزگشای رمزگذار داشته باشیم و آن رمزگشاها
25
00:01:01,710 –> 00:01:05,188
و رمزگذارها برای
26
00:01:05,188 –> 00:01:06,840
تبدیل فضای رنگی که w
27
00:01:06,840 –> 00:01:09,060
در این مورد رد میشوید، اما میدانید
28
00:01:09,060 –> 00:01:12,170
که آنها آنجا هستند و سپس
29
00:01:12,170 –> 00:01:15,030
خواندن فایل نوشتن یک فایل را مسدود میکنند
30
00:01:15,030 –> 00:01:18,990
، تبدیل DCT و
31
00:01:18,990 –> 00:01:22,080
فشردهسازی یا بهتر بگوییم فشردهسازی بدون تلفات را
32
00:01:22,080 –> 00:01:25,350
به عنوان آخرین مرحله
33
00:01:25,350 –> 00:01:27,270
انجام میدهید تا به این ترتیب نیایند. اما و شما
34
00:01:27,270 –> 00:01:29,850
این ایده را دریافت می کنید که در واقع می توانید
35
00:01:29,850 –> 00:01:31,500
این موارد را با ترتیب های مختلف اعمال کنید و الگوریتم های متفاوتی دریافت خواهید کرد،
36
00:01:31,500 –> 00:01:33,299
اما ما به
37
00:01:33,299 –> 00:01:36,720
دنباله کلی می رویم زیرا آنها
38
00:01:36,720 –> 00:01:38,670
برای چیزی مانند JPEG اجرا
39
00:01:38,670 –> 00:01:39,990
می شوند. به JPEG،
40
00:01:39,990 –> 00:01:41,790
زیرا آنها باید زمان زیادی را
41
00:01:41,790 –> 00:01:43,890
صرف خواندن استانداردها و همه اینها کنند و
42
00:01:43,890 –> 00:01:45,000
این واقعاً هدفی نیست که ما
43
00:01:45,000 –> 00:01:46,979
فقط بخواهیم ایده ای درباره
44
00:01:46,979 –> 00:01:48,930
ایجاد چنین چیزی
45
00:01:48,930 –> 00:01:51,899
در پایتون داشته باشیم، بنابراین در قسمت اول ما
46
00:01:51,899 –> 00:01:55,560
کد میخواهد با مسدود کردن شروع شود،
47
00:01:55,560 –> 00:01:57,420
آیا میخواهید توضیح دهید که ما
48
00:01:57,420 –> 00:02:01,140
در اینجا چه کاری انجام میدهیم بله بله مطمئناً، بنابراین
49
00:02:01,140 –> 00:02:03,960
میبینید وقتی به a نگاه میکنید وقتی
50
00:02:03,960 –> 00:02:08,119
به یک تصویر ساده نگاه میکنید
51
00:02:08,119 –> 00:02:11,008
چیزی در فضای فرکانس ندارید اما شما
52
00:02:11,008 –> 00:02:12,730
مکان های دقیقی دارید
53
00:02:12,730 –> 00:02:15,250
بنابراین شما پیکسل دقیقی را می دانید
54
00:02:15,250 –> 00:02:17,860
که آن سیگنال پیدا شده است، اما
55
00:02:17,860 –> 00:02:20,530
چیزی در مورد فرکانس آن نمی دانید، اما اگر
56
00:02:20,530 –> 00:02:22,269
کل تصویر را در یک لحظه رمزگذاری
57
00:02:22,269 –> 00:02:24,250
کنید، دقیقاً با مشکل مخالف مواجه خواهید شد،
58
00:02:24,250 –> 00:02:26,140
دقیقاً می دانید که چه فرکانس هایی
59
00:02:26,140 –> 00:02:28,000
درگیر بوده است، اما اکنون هیچ مشکلی ندارید. تصور کنید که
60
00:02:28,000 –> 00:02:30,069
آنها کجا هستند، بنابراین شما باید آن را
61
00:02:30,069 –> 00:02:31,750
با دقت کامل رمزگذاری کنید تا
62
00:02:31,750 –> 00:02:33,610
همچنان همان تصویر را به دست آورید، به طوری که به روشی که
63
00:02:33,610 –> 00:02:35,560
ما بین این دو سازش
64
00:02:35,560 –> 00:02:37,330
می کنیم، آن را مسدود می کنیم، آن را به
65
00:02:37,330 –> 00:02:39,340
قطعات بسیار کوچک تقسیم می کنیم و سپس اطلاعات سیگنال را دریافت می کنیم.
66
00:02:39,340 –> 00:02:41,170
آن قطعات کوچک و
67
00:02:41,170 –> 00:02:42,819
اکنون ما کمی در مورد مکان می دانیم کمی در
68
00:02:42,819 –> 00:02:44,620
مورد فرکانس و می توانیم
69
00:02:44,620 –> 00:02:48,150
مقداری از آن فرکانس را حذف کنیم اگر
70
00:02:48,150 –> 00:02:50,849
من وقتی به ko نگاه می کنم یک دسته از
71
00:02:50,849 –> 00:02:53,920
16 ها را می بینم که آن شش نوجوان در ko هستند
72
00:02:53,920 –> 00:02:56,049
وقتی شما وقتی مسدود کردن را انجام می دهید تا
73
00:02:56,049 –> 00:02:57,640
در واقع اندازه بلوک باشد،
74
00:02:57,640 –> 00:02:59,560
دلخواه است اما باید چیزی
75
00:02:59,560 –> 00:03:01,599
بسیار کوچک باشد 16 در واقع
76
00:03:01,599 –> 00:03:05,319
یک اندازه بلوک بسیار بزرگ است.
77
00:03:05,319 –> 00:03:07,329
78
00:03:07,329 –> 00:03:10,090
این بدان معناست که وقتی من 16 را می بینم
79
00:03:10,090 –> 00:03:12,450
تصور می کنم بلوک من 16 در 16
80
00:03:12,450 –> 00:03:16,269
پیکسل باشد بله درست است
81
00:03:16,269 –> 00:03:18,910
بله بنابراین قسمت بعدی
82
00:03:18,910 –> 00:03:20,859
تابع در اینجا ما دو تابع داریم
83
00:03:20,859 –> 00:03:25,510
که DCT را انجام می دهد اگر از ظاهر
84
00:03:25,510 –> 00:03:28,299
آنها باشد. از سمت بسته pi آیا می
85
00:03:28,299 –> 00:03:29,680
خواهید کمی توضیح دهید که ما در
86
00:03:29,680 –> 00:03:32,380
اینجا می خواهیم چه کاری انجام دهیم بله من نمی خواهم
87
00:03:32,380 –> 00:03:34,660
DT را خودم پیاده سازی کنم، اجازه دهید DC را پیاده سازی نکنیم
88
00:03:34,660 –> 00:03:37,720
بله اتفاقی که می افتد چرا ما به DCT نیاز داریم
89
00:03:37,720 –> 00:03:41,590
آه بنابراین ما نیاز داریم DCT چون
90
00:03:41,590 –> 00:03:44,400
روش ما در این مورد برای تبدیل
91
00:03:44,400 –> 00:03:46,600
اطلاعات مکان به اطلاعات سیگنال است،
92
00:03:46,600 –> 00:03:47,260
93
00:03:47,260 –> 00:03:49,569
منظورم اطلاعات فرکانس است، بنابراین میخواهیم
94
00:03:49,569 –> 00:03:51,489
به فضای فرکانس و DCT برویم
95
00:03:51,489 –> 00:03:53,410
تا بتوانیم
96
00:03:53,410 –> 00:03:56,049
از انواع FFTهای مختلف استفاده کنیم، بنابراین هر تبدیل فوریه
97
00:03:56,049 –> 00:03:58,510
ممکن است انجام شود. قادر به انجام این کار است، اما
98
00:03:58,510 –> 00:04:01,810
تبدیل کسینوس گسسته
99
00:04:01,810 –> 00:04:04,269
برای این روش خاص مناسبتر است، بنابراین روشی که من
100
00:04:04,269 –> 00:04:06,880
میفهمم این است که DCT اگر
101
00:04:06,880 –> 00:04:08,739
در مورد تبدیل فوریه آموختهاید، راهی
102
00:04:08,739 –> 00:04:13,450
برای تبدیل اطلاعات شما به
103
00:04:13,450 –> 00:04:14,919
تبدیل فوریه است، شما آن را از t تبدیل میکنید.
104
00:04:14,919 –> 00:04:18,039
در فضایی که آن ها فضای کوچکی را
105
00:04:18,039 –> 00:04:22,240
به فضای فرکانس
106
00:04:22,240 –> 00:04:25,180
می گویند، اما DCT که تبدیل کسینوس گسسته را انجام می دهد به این معنی است که
107
00:04:25,180 –> 00:04:26,110
ما یک
108
00:04:26,110 –> 00:04:28,240
تبدیل فوریه گسسته را انجام می دهیم و ما فقط
109
00:04:28,240 –> 00:04:30,460
قسمت واقعی
110
00:04:30,460 –> 00:04:33,370
را می گیریم نه قسمت خیالی آن را که ممکن است به جزئیات بیشتر وارد شویم،
111
00:04:33,370 –> 00:04:35,650
زیرا توضیح زیاد است. فرکانس ممکن است کمی
112
00:04:35,650 –> 00:04:38,500
طول بکشد، اما بیایید نگاه کنیم،
113
00:04:38,500 –> 00:04:41,889
امروز به پیاده سازی آن نگاه خواهیم کرد، بله، فکر
114
00:04:41,889 –> 00:04:43,689
می کنم شما احتمالاً برای
115
00:04:43,689 –> 00:04:45,280
توضیح تفاوت بین آن ها
116
00:04:45,280 –> 00:04:49,330
نسبت به IOT مناسب تر هستید.
117
00:04:49,330 –> 00:04:51,610
118
00:04:51,610 –> 00:04:54,069
در واقع اشکالی ندارد که بعداً به کجا خواهم رفت،
119
00:04:54,069 –> 00:04:56,770
بنابراین ما DCT داریم
120
00:04:56,770 –> 00:04:58,750
مرحله بعدی ما چیست، ما سعی میکنیم کوانتیزهسازی را انجام دهیم،
121
00:04:58,750 –> 00:05:03,159
بنابراین، مرحله بعدی
122
00:05:03,159 –> 00:05:05,860
معمولاً کوانتیزهسازی است و
123
00:05:05,860 –> 00:05:07,509
دلیل اینکه ما میخواهیم این کار را انجام دهیم این است که
124
00:05:07,509 –> 00:05:10,539
اکنون که ما چیزهایی را در یک
125
00:05:10,539 –> 00:05:14,289
فضای تا حدودی فرکانس زمانی داشته باشیم، ما می
126
00:05:14,289 –> 00:05:16,349
خواهیم اطلاعات فرکانس بالا
127
00:05:16,349 –> 00:05:18,460
را در هر یک از آن بلوک ها بیرون بیاوریم،
128
00:05:18,460 –> 00:05:22,479
و چرا نه بلافاصله پس از اینکه آن را درست
129
00:05:22,479 –> 00:05:24,099
کردید، حمل آن چیزها را معنی ندارد.
130
00:05:24,099 –> 00:05:27,009
بنابراین روشی که کوانتایزر شما انجام
131
00:05:27,009 –> 00:05:28,779
می دهد که می توانید با جزئیات بیشتر
132
00:05:28,779 –> 00:05:32,520
در ویدیوهای دیگر بیابید، به سادگی با استفاده از
133
00:05:32,520 –> 00:05:35,889
برش گرد کردن به نزدیکترین
134
00:05:35,889 –> 00:05:39,460
عدد صحیح است که بسیار ساده است،
135
00:05:39,460 –> 00:05:40,960
در واقع فقط ضرب و
136
00:05:40,960 –> 00:05:43,839
تقسیم است، اما نکته اینجاست که به شما می دهد.
137
00:05:43,839 –> 00:05:46,150
کنترل آنچه که میخواهید حفظ کنید
138
00:05:46,150 –> 00:05:47,710
و آنچه میخواهید بر
139
00:05:47,710 –> 00:05:51,779
اساس فرکانس برای هر بلوک در یک
140
00:05:51,779 –> 00:05:56,529
کوانتایزر از دست بدهید، چگونه چیزی که من دیدم در
141
00:05:56,529 –> 00:05:58,960
حال تبدیل شناور بود، به نظر میرسد
142
00:05:58,960 –> 00:06:00,520
که ما شناور را به یک عدد صحیح تبدیل میکنیم.
143
00:06:00,520 –> 00:06:03,729
اگر میخواهم از یک
144
00:06:03,729 –> 00:06:06,789
کوانتایزر هستههای بیشتری استفاده کنم یا
145
00:06:06,789 –> 00:06:09,639
چیزهای بیشتری را درون آن بیاندازم یا
146
00:06:09,639 –> 00:06:11,110
تعداد سطلها را کاهش دهم، در این مورد نمیخواهم از
147
00:06:11,110 –> 00:06:14,639
تمام اعداد صحیح استفاده کنم چگونه این کار را انجام میدهید،
148
00:06:14,639 –> 00:06:17,289
بنابراین بهترین راه برای انجام این کار در واقع فقط
149
00:06:17,289 –> 00:06:20,529
برای بالا بردن کوانتایزر است که میتوانید
150
00:06:20,529 –> 00:06:22,990
هر نوع چند جملهای یا هر چیز جالبی را
151
00:06:22,990 –> 00:06:24,580
که میخواهید انجام دهید، اما
152
00:06:24,580 –> 00:06:26,620
راه ساده این است که کوانتایزر خود را ضرب کنید تا
153
00:06:26,620 –> 00:06:28,449
هر چه کوانتایزر بزرگتر باشد،
154
00:06:28,449 –> 00:06:30,339
دادههای کمتری ذخیره میکنید. اگر فقط
155
00:06:30,339 –> 00:06:32,409
چندتایی هستید با استفاده از کوانتایزر من دو تایی که
156
00:06:32,409 –> 00:06:33,819
در واقع یک کاهش بسیار شدید خواهد بود
157
00:06:33,819 –> 00:06:37,029
، اما شاید شما بخواهید این کار را انجام
158
00:06:37,029 –> 00:06:39,039
دهید، نرخ بیت خود را کاهش دهید، بنابراین اکنون ما
159
00:06:39,039 –> 00:06:39,850
160
00:06:39,850 –> 00:06:45,280
کوانتایزر را داریم و بلوکهایی را
161
00:06:45,280 –> 00:06:47,740
داریم که نداریم، فضای یقه را نادیده میگیریم.
162
00:06:47,740 –> 00:06:52,810
ما همه اینها را با هم کنار هم گذاشتیم مانند
163
00:06:52,810 –> 00:06:55,420
قسمت آخر آن چگونه با آنچه
164
00:06:55,420 –> 00:06:58,180
اینجا در حال رخ دادن است خوب است، بنابراین اکنون که
165
00:06:58,180 –> 00:07:00,070
کوانتیزی را انجام دادیم، می خواهیم
166
00:07:00,070 –> 00:07:01,240
در واقع مقدار
167
00:07:01,240 –> 00:07:04,090
اطلاعات موجود در آن را کاهش دهیم.
168
00:07:04,090 –> 00:07:06,910
در واقع این پایه را تولید می کنیم، ما
169
00:07:06,910 –> 00:07:10,150
اکنون تعداد زیادی صفر داریم، بنابراین
170
00:07:10,150 –> 00:07:12,730
بهتر است اگر آن
171
00:07:12,730 –> 00:07:14,740
اطلاعات را که اکنون با صفر پوشانده شده است، در
172
00:07:14,740 –> 00:07:17,920
نظر بگیریم و آن را فشرده کنیم، می توانیم این کار را با
173
00:07:17,920 –> 00:07:19,870
هر الگوریتم فشرده سازی بدون تلفات انجام دهیم، حتی
174
00:07:19,870 –> 00:07:22,660
درجاتی از اتلاف ممکن است مشکلی نداشته باشد.
175
00:07:22,660 –> 00:07:25,210
بنابراین آنها در واقع این کار را با RLE
176
00:07:25,210 –> 00:07:26,800
یا رمزگذاری طول اجرا انجام می دهند و این
177
00:07:26,800 –> 00:07:27,970
به این دلیل است که بزرگترین چیز برای
178
00:07:27,970 –> 00:07:31,120
آنها خلاص شدن از شر صفرها است، اما در اینجا
179
00:07:31,120 –> 00:07:33,100
برای ما بی اهمیت است که فقط از Z Lib استفاده کنیم، بنابراین من
180
00:07:33,100 –> 00:07:36,100
فقط رمزگشایی رمزگشایی Z Lib یا inflate deflate را انجام دادم.
181
00:07:36,100 –> 00:07:38,190
هر چه شما بخواهید مانند
182
00:07:38,190 –> 00:07:42,190
Celia zip gzip هر یک از مواردی را که
183
00:07:42,190 –> 00:07:43,570
می خواهید همان چیز را دوباره بیرون
184
00:07:43,570 –> 00:07:49,690
بیاورید که کار می کند، بنابراین قبل از اجرای
185
00:07:49,690 –> 00:07:52,060
کد، می توانید از بالا به پایین بروید، بنابراین
186
00:07:52,060 –> 00:07:53,530
ما چند مؤلفه در اینجا داریم،
187
00:07:53,530 –> 00:07:56,770
می توانید در مورد مؤلفه بزرگ صحبت کنید.
188
00:07:56,770 –> 00:07:59,950
کد دوباره بله مطمئناً بنابراین ما
189
00:07:59,950 –> 00:08:01,660
لایههایی به سمت راست داریم، ما یک
190
00:08:01,660 –> 00:08:03,610
دسته کامل از کدکها را داریم که در یک
191
00:08:03,610 –> 00:08:06,000
خط لوله راهاندازی کردهایم و آنجا چون
192
00:08:06,000 –> 00:08:08,380
رمزگذار و رمزگشا وجود دارد، واقعاً به
193
00:08:08,380 –> 00:08:11,080
نوعی دو خط لوله است که بسیار خوب است، بنابراین اولین
194
00:08:11,080 –> 00:08:12,490
چیزی که ما هستیم این کار این است که چیزهایی
195
00:08:12,490 –> 00:08:14