পিএনজি কীভাবে ক্ষতিহীন হয় যে এতে একটি সংক্ষেপণ প্যারামিটার রয়েছে?


156

পিএনজি ফাইলগুলিতে লোসহীন সংকোচনের ব্যবহার বলা হয়। যাইহোক, আমি যখনই কোনও চিত্র সম্পাদকে থাকি যেমন জিআইএমপি এবং কোনও চিত্রকে পিএনজি ফাইল হিসাবে সংরক্ষণের চেষ্টা করি তখন এটি সংকোচনের প্যারামিটারের জন্য জিজ্ঞাসা করে, যা 0 থেকে 9 এর মধ্যে থাকে যদি এর কোনও সংকোচন প্যারামিটার থাকে যা ভিজ্যুয়াল স্পষ্টতাকে প্রভাবিত করে সংকুচিত চিত্রটি, কীভাবে এটি পিএনজি ক্ষতিহীন করে তোলে?

আমি যখন কম্প্রেশন প্যারামিটারটি 9-এ সেট করি তখনই কি আমি ক্ষতিকারক আচরণ পাব?


40
বেশিরভাগ ক্ষতিহীন কম্প্রেশন অ্যালগরিদমগুলিতে সুরযুক্ত পদার্থ রয়েছে (অভিধানের আকারের মতো) যা "আউটপুট আকারকে ছোট করার ক্ষেত্রে কতটা প্রচেষ্টা করা উচিত" স্লাইডারটিতে সাধারণীকরণ করা হয়। এই পিন জন্য, GZIP, BZIP2, LZMA ... বৈধ
ড্যানিয়েল বি

20
প্রশ্নটি আলাদাভাবে বলা যেতে পারে। যদি সংক্ষেপণ থেকে কোনও গুণমান না হারিয়ে যায় তবে সর্বদা ক্ষুদ্রতম আকারের উত্পাদনকারী সংক্ষেপণটি কেন ব্যবহার করবেন না? এর পরে উত্তরটি হবে, কারণ এটি কমপ্রেস এবং ডিসপ্রেস করতে আরও র‌্যাম এবং আরও সিপিইউ সময় প্রয়োজন। কখনও কখনও আপনি দ্রুত সংক্ষেপণ চান এবং সংক্ষেপণ অনুপাত সম্পর্কে ততটা যত্ন নেই don't
কাস্পারড

14
পিএনজি সংকোচনের ফাইলগুলি জিপিংয়ের প্রায় সমান। আপনি এগুলি কম বা বেশি সংকোচন করতে পারেন তবে ডিকম্প্রেস হয়ে গেলে আপনি সঠিক ফাইলটি ফিরে পাবেন what এটাই এটিকে দোষহীন করে তোলে।
মাইকবাবকক

13
জিপ এবং রারের মতো বেশিরভাগ সংক্ষেপণ সফ্টওয়্যার আপনাকে "সংকোচনের স্তর" প্রবেশ করতে দেয় যা আপনাকে ছোট ফাইলের মধ্যে চয়ন করতে দেয় <--> স্বল্প সময়ের মধ্যে। এর অর্থ এই নয় যে এই সফ্টওয়্যারটি সংকোচনের সময় ডেটা ফেলে দেয়। এই সেটিংটি (জিআইএমপি, পিএনজিক্রাশ ইত্যাদিতে) অনুরূপ।
সালমান এ

2
@ নেক্সা: পিএনজি আসলে কতটা ক্ষয়ক্ষতিহীন তা সম্পর্কে কোনও সতর্কতা নেই। এটি সর্বদা 100% ক্ষতিহীন। নিবন্ধটি কেবল আপনাকে বুগ সম্পর্কে সতর্ক করে যা কিছু পুরানো ব্রাউজারগুলি গামা সংশোধন পরিচালনা করার জন্য তাদের পিএনজি প্রয়োগে ছিল। এবং এটি কেবল তখনই অর্থবহ, যদি আপনার সিএসএস বর্ণের সাথে রঙের (যা গামা সংশোধন করে না) প্রয়োজন হয়।
পাওলি এল

উত্তর:


183

পিএনজি নিখরচায়। জিআইএমপি সম্ভবত এই ক্ষেত্রে সেরা শব্দটি ব্যবহার না করে। এটিকে "সংক্ষেপণের গুণমান" বা অন্য কথায়, "সংকোচনের স্তর" হিসাবে ভাবেন। নিম্ন সংকোচনের সাথে, আপনি একটি বড় ফাইল পেয়েছেন, তবে উত্পাদন করতে এটি কম সময় নেয়, উচ্চতর সংকোচনের সাথে, আপনি একটি ছোট ফাইল পান যা উত্পাদন করতে আরও বেশি সময় নেয়। সাধারণত সর্বোচ্চ সংকোচনের স্তরে যাওয়ার সময় আপনি হ্রাসকারী রিটার্ন পান (যেমন আকারের তুলনায় যতটা সময় নেয় তার তুলনায় তেমন হ্রাস নয়) তবে এটি আপনার উপর নির্ভর করে।


42
এছাড়াও, পিএনজি সংক্ষেপে আসলে অনেকগুলি টিউনিয়েল পরামিতি রয়েছে যেখানে উত্সের বিষয়বস্তুর উপর নির্ভর করে উভয় দিকের সামঞ্জস্য আউটপুট আকার সঙ্কুচিত করতে পারে - এটি একটি সাধারণ "আরও ভাল" এবং "খারাপ" স্লাইডারের চেয়ে অনেক জটিল। সাধারণ উদ্দেশ্যে, এটি খুব গুরুত্বপূর্ণ নয়, তবে আপনি যদি নিখুঁত ক্ষুদ্রতম চান তবে তার মতো একটি সরঞ্জাম ব্যবহার pngcrushকরুন যতটা সম্ভব ক্ষুদ্রতমের জন্য অনেকগুলি বৈকল্পিকের তুলনা করতে পারে।
বব

4
একটি উচ্চতর সংকোচনের মাত্রা সংকোচনের সময় বাড়ায়, তবে এটি কীভাবে ডিকম্প্রেশনকেও প্রভাবিত করে ?
নোলোনার

10
@ নোলোনার সাধারণত না; যদি কোনও উচ্চতর সংকোচনের স্তর সাধারণত ডিকম্প্রেশন সময় হ্রাস পায় কারণ এটি পড়তে এবং প্রক্রিয়া করার জন্য কম ডেটা থাকে। দীর্ঘতর সংকোচনের সময়টি সংকোচনের জন্য নিদর্শনগুলি খুঁজে পাওয়ার আরও বিশদ কাজ করার কারণে (ওভারস্প্লিফ্লাইফিং)।
fluffy

1
@ ফ্লাফি লর্ডনেকবার্ডের উত্তরে সর্বাধিক সংকোচনের সাথে সর্বনিম্নের চেয়ে ডিকোড করতে 5x বেশি সময় লেগেছে।
আন্দ্রে চেল্লা

1
পিএনজির জন্য, আরও ভাল-সংকুচিত ফাইলগুলির জন্য দীর্ঘতর সংক্ষেপনের সময় থাকা খুব সাধারণ। সমস্যাটি হ'ল পিএনজি দিয়ে, একটি সম্ভাব্য কৌশলটি ফাইলটি যতক্ষণ ছোট হয় ততক্ষণ বার বার সংক্ষেপণ অ্যালগরিদম প্রয়োগ করা উচিত। আকার বাড়ার পরে আপনি এটি প্রয়োগ করা বন্ধ করুন। সুতরাং এটি সম্ভবত সম্ভব যে আপনি 5 বা 6 বার সংক্ষেপণ অ্যালগরিদম প্রয়োগ করেছেন যার অর্থ আপনি চিত্রটি প্রদর্শনের জন্য 5 বা 6 বার ফাইলটি সঙ্কুচিত করতে হবে।
yo '

213

পিএনজি সংকুচিত, তবে ক্ষতিহীন

সংকোচনের স্তরটি ফাইল আকার এবং এনকোডিং / ডিকোডিং গতির মধ্যে একটি বাণিজ্য trade অতিরিক্ত সাধারণকরণের জন্য, এমনকি এফএলসি-র মতো অ-চিত্রের ফর্ম্যাটগুলিরও একই ধরণের ধারণা রয়েছে।

বিভিন্ন সংকোচনের স্তর, একই ডিকোড আউটপুট

যদিও ফাইলের আকারগুলি পৃথক, বিভিন্ন সংকোচনের মাত্রার কারণে, প্রকৃত ডিকোডেড আউটপুট অভিন্ন হবে।

আপনি এমডি 5 ম্যাক্সারffmpeg ব্যবহারের সাথে ডিকোডড আউটপুটগুলির MD5 হ্যাশগুলির তুলনা করতে পারেন ।

এটি কয়েকটি উদাহরণ সহ সেরা দেখানো হয়েছে:

পিএনজি ফাইলগুলি তৈরি করুন:

$ ffmpeg -i input -vframes 1 -compression_level 0 0.png
$ ffmpeg -i input -vframes 1 -compression_level 100 100.png
  • ডিফল্টরূপে পিএনজি আউটপুট ffmpegব্যবহার করবে -compression_level 100

ফাইলের আকারের তুলনা করুন:

$ du -h *.png
  228K    0.png
  4.0K    100.png

পিএনজি ফাইলগুলি ডিকোড করুন এবং এমডি 5 হ্যাশগুলি দেখান:

$ ffmpeg -loglevel error -i 0.png -f md5 -
3d3fbccf770a51f9d81725d4e0539f83

$ ffmpeg -loglevel error -i 100.png -f md5 -
3d3fbccf770a51f9d81725d4e0539f83

উভয় হ্যাশগুলি সমান হওয়ায় আপনি নিশ্চয়তা পেতে পারেন যে ডিকোডড আউটপুটগুলি (সঙ্কুচিত, কাঁচা ভিডিও) হুবহু এক।


26
+1 জানত না যে ffmpeg png গুলি পরিচালনা করতে পারে।
লেকেনস্টেইন

21
স্ক্রিনশট তৈরি করার জন্য @ লিকেনস্টেইন এটি দুর্দান্ত । উদাহরণ 30 সেকেন্ড এড়িয়ে যান এবং স্ক্রিনশট নিতে হবে: ffmpeg -ss 30 -i input -vframes 1 output.pngএছাড়াও জন্য ভাল ইমেজ আউট ভিডিও উপার্জন এবং তদ্বিপরীত।
লোগান

এর অর্থ কি এই যে পিএনজিটি প্রতিবার রেন্ডার করতে হবে তা সংক্ষেপিত করা দরকার? কারণ এটি যদি সত্য হয় তবে আমাদের অবশ্যই হতে হবে
akshay2000

আপনি যদি ডিস্ক বা ক্যাশে থেকে ফাইলটি পুনরায় পড়েন তবে হ্যাঁ, এটি সংক্ষেপিত হতে হবে। একই পৃষ্ঠার ভিতরে ক্যাশে সম্ভবত সংক্ষেপিত সংস্করণটি পুনরায় ব্যবহার করতে পারে।
ডেভিড মর্টেনসন

1
@ akshay2000 প্রোগ্রামটি কীভাবে পিএনজির রেন্ডার করে তা নির্ভর করে। সাধারণত ফাইলটি ডিস্ক থেকে পড়া হয়, ড্যাম্প্রেসড হয় এবং র‌্যামে বাফার হয়। যতক্ষণ না এটি র‌্যামে বাফার হয় ততক্ষণ এটিকে আবার চিত্রটি সঙ্কুচিত করার প্রয়োজন হবে না।
xZise

24

পিএনজি সংকোচন দুটি পর্যায়ে ঘটে in

  1. প্রাক-সংক্ষেপণ চিত্রের ডেটাটিকে পুনরায় সাজিয়ে তোলে যাতে এটি একটি সাধারণ উদ্দেশ্য সংকোচন অ্যালগরিদম দ্বারা আরও সংকোচনের হতে পারে।
  2. আসল সংক্ষেপণ ডিফল্ট দ্বারা সম্পন্ন হয়, যা সংক্ষিপ্ত টোকেন দিয়ে প্রতিস্থাপন করে সদৃশ বাইট-সিকোয়েন্সগুলি অনুসন্ধান করে এবং সরিয়ে দেয়।

পদক্ষেপ 2 যেহেতু খুব সময় / সংস্থান নিবিড় কাজ, অন্তর্নিহিত zlib গ্রন্থাগার (কাঁচা ডিফল্টের এনক্যাপসুলেশন) 1 = দ্রুততম সংক্ষেপণ, 9 = সেরা সংক্ষেপণ, 0 = কোনও সংকোচন থেকে শুরু করে একটি সংক্ষেপণ প্যারামিটার নেয়। 0-9 পরিসীমাটি এখান থেকেই আসে এবং জিআইএমপি কেবলমাত্র সেই পরামিতিটি zlib এ চলে যায়। লক্ষ করুন যে 0 স্তরে আপনার পিএনজি আসলে সমতুল্য বিটম্যাপের চেয়ে কিছুটা বড় হবে।

যাইহোক, স্তর 9 কেবল "শ্রেষ্ঠ" যে zlib প্রচেষ্টা করা হবে, এবং এখনও খুব একটা হয় আপস সমাধান
এটির জন্য সত্যই অনুভূতি পেতে আপনি যদি একটি সন্ধানে 1000x আরও প্রসেসিং শক্তি ব্যয় করতে ইচ্ছুক হন তবে আপনি zlib এর পরিবর্তে zopfli ব্যবহার করে 3-8% উচ্চতর ডেটা ঘনত্ব অর্জন করতে পারেন ।
সংক্ষেপণটি এখনও নিখুঁত, এটি কেবলমাত্র ডেটাটির আরও অনুকূল DE এটি একটি জিলিব-সামঞ্জস্যপূর্ণ লাইব্রেরির সীমাতে পৌঁছেছে এবং তাই সত্যই "সেরা" সংক্ষেপণ যা পিএনজি ব্যবহার করে অর্জন করা সম্ভব।


2
দ্রষ্টব্য: সংক্ষেপনের সময়টি কমপ্রেস লেভেল বা জোফফ্লাইপং ব্যবহার করার সময় পুনরাবৃত্তির গণনা নির্বিশেষে একই is
অ্যাডরিয়া

16

পিএনজি ফর্ম্যাটের প্রাথমিক অনুপ্রেরণা ছিল জিআইএফের জন্য একটি প্রতিস্থাপন তৈরি করা যা কেবল নিখরচায় ছিল না তবে মূলত সমস্ত ক্ষেত্রে এটির চেয়েও উন্নতি ছিল। ফলস্বরূপ, পিএনজি সংকোচন সম্পূর্ণ লস লেস - এটি যে, জিআইএফ এবং টিআইএফএফ-এর বেশিরভাগ ফর্মের মতোই মূল চিত্রের ডেটা পুনরায় তৈরি করা যেতে পারে bit

পিএনজি একটি ২-পর্যায়ের সংক্ষেপণ প্রক্রিয়া ব্যবহার করে:

  1. প্রাক-সংক্ষেপণ: ফিল্টারিং (পূর্বাভাস)
  2. সংক্ষিপ্তসার: ডিফল্ট ( উইকিপিডিয়া দেখুন )

প্রাকম্প্রেশন পদক্ষেপকে ফিল্টারিং বলা হয়, যা চিত্রের ডেটাগুলিকে বিপরীতমুখী রূপান্তর করার একটি পদ্ধতি যাতে মূল কম্প্রেশন ইঞ্জিন আরও দক্ষতার সাথে কাজ করতে পারে।

একটি সাধারণ উদাহরণ হিসাবে, 1 থেকে 255 পর্যন্ত অভিন্নভাবে বাইটের ক্রম বাড়িয়ে বিবেচনা করুন:

1, 2, 3, 4, 5, .... 255

যেহেতু ক্রমটিতে কোনও পুনরাবৃত্তি নেই, এটি খুব খারাপভাবে সংকুচিত হয় বা একেবারেই নয়। তবে অনুক্রমের একটি তুচ্ছ পরিবর্তন - যথা, প্রথম বাইট একা রেখে তবে পরবর্তী এবং প্রতিটি বাইটকে এর এবং পূর্বসূরীর মধ্যে পার্থক্যের পরিবর্তে - ক্রমটিকে অত্যন্ত সংকোচযোগ্য সেটে রূপান্তরিত করে:

1, 1, 1, 1, 1, .... 1

উপরের রূপান্তরটি ক্ষতিহীন, যেহেতু কোনও বাইট বাদ দেওয়া হয়নি এবং এটি সম্পূর্ণরূপে বিপরীত। এই সিরিজের সঙ্কুচিত আকারটি অনেক হ্রাস পাবে তবে মূল সিরিজটি এখনও পুরোপুরি পুনর্গঠিত হতে পারে।

প্রকৃত চিত্র-ডেটা খুব কমই নিখুঁত, তবে ফিল্টারিং গ্রেস্কেল এবং ট্রাইকোলার চিত্রগুলিতে সংকোচনের উন্নতি করে এবং এটি কিছু প্যালেট চিত্রগুলিতেও সহায়তা করতে পারে। পিএনজি পাঁচ ধরণের ফিল্টার সমর্থন করে এবং একটি এনকোডার চিত্রের প্রতিটি সারি পিক্সেলের জন্য আলাদা ফিল্টার ব্যবহার করতে পারে:

ভাবমূর্তি

অ্যালগরিদম বাইটে কাজ করে তবে বৃহত পিক্সেলের জন্য (যেমন, 24-বিট আরজিবি বা -৪-বিট আরজিবিএ) কেবলমাত্র বাইটগুলির সাথে তুলনা করা হয়, যার অর্থ পিক্সেল-বর্ণগুলির লাল উপাদানগুলি সবুজ এবং নীল পিক্সেল উপাদানগুলি থেকে পৃথকভাবে পরিচালনা করা হয়।

প্রতিটি সারির জন্য সেরা ফিল্টার চয়ন করতে, কোনও এনকোডারকে সমস্ত সম্ভাব্য সংমিশ্রণ পরীক্ষা করতে হবে। এটি পরিষ্কারভাবে অসম্ভব, কারণ একটি 20-সারির চিত্রের জন্য 95 ট্রিলিয়ন সংমিশ্রণেরও পরীক্ষা প্রয়োজন, যেখানে "টেস্টিং" পুরো চিত্রটি ফিল্টারিং এবং সংকোচনের সাথে জড়িত।

সংকোচনের স্তরগুলি সাধারণত 0 (কোনওটি নয়) এবং 9 (সেরা) এর মধ্যে সংখ্যা হিসাবে সংজ্ঞায়িত হয়। এগুলি গতি এবং আকারের মধ্যে ট্রেড অফগুলিকে বোঝায় এবং সারি-ফিল্টারগুলির কতগুলি সংমিশ্রণ চেষ্টা করতে হবে তা সম্পর্কিত। এই সংকোচনের স্তর সম্পর্কিত কোনও মান নেই, তাই প্রতিটি চিত্র-সম্পাদকের নিজস্ব অ্যালগরিদম থাকতে পারে যে চিত্র-আকারের অনুকূলকরণের সময় কতগুলি ফিল্টার চেষ্টা করতে হবে।

সংকোচনের মাত্রা 0 এর অর্থ হ'ল ফিল্টারগুলি মোটেই ব্যবহৃত হয় না, যা দ্রুত তবে অপচয়যোগ্য। উচ্চ স্তরের অর্থ হ'ল চিত্র-সারিগুলিতে আরও বেশি সংখ্যক সংমিশ্রণের চেষ্টা করা হয় এবং কেবল সেরাগুলি ধরে রাখা হয়।

আমি অনুমান করব যে সর্বোত্তম সংকোচনের সবচেয়ে সহজ পদ্ধতির হ'ল প্রতিটি ফিল্টারের সাথে প্রতিটি সারিটি ক্রমান্বয়ে পরীক্ষা-সংকুচিত করা, সবচেয়ে ছোট ফলাফল সংরক্ষণ করা এবং পরবর্তী সারির জন্য পুনরাবৃত্তি করা। এটি পুরো চিত্রটি পাঁচবার ফিল্টারিং ও সংকোচনের সমান, যা অনেক সময় সংক্রমণ ও ডিকোড হওয়া কোনও চিত্রের জন্য যুক্তিসঙ্গত বাণিজ্য বন্ধ হতে পারে। লোয়ার সংকোচনের মানগুলি সরঞ্জাম বিকাশকারীর বিবেচনার ভিত্তিতে কম করবে।

ফিল্টারগুলি ছাড়াও, সংক্ষেপণের স্তরটি zlib সংকোচনের স্তরকেও প্রভাবিত করতে পারে যা 0 (কোনও ডিফল্ট নয়) এবং 9 (সর্বাধিক ডিফল্ট) এর মধ্যে একটি সংখ্যা। নির্দিষ্ট 0-9 স্তরগুলি কীভাবে ফিল্টারগুলির ব্যবহারকে প্রভাবিত করে, যা পিএনজির মূল অপ্টিমাইজেশান বৈশিষ্ট্য, এটি এখনও সরঞ্জামটির বিকাশকারীের উপর নির্ভরশীল।

উপসংহারটি হল যে পিএনজির একটি সংকোচন প্যারামিটার রয়েছে যা ফাইল-আকারকে খুব উল্লেখযোগ্যভাবে হ্রাস করতে পারে, এমনকি একটি পিক্সেল এমনকি ক্ষতি ছাড়াই।

সূত্র:

উইকিপিডিয়া পোর্টেবল নেটওয়ার্ক গ্রাফিক্স
ডকুমেন্টেশন libpng অধ্যায় 9 - সংক্ষেপণ এবং ফিল্টারিং


1
আমি মনে করি না যে সংকোচনের স্তর সেটিং ফিল্টারগুলির ব্যবহারকে পরিবর্তন করে। স্তর 1-9 সেটিংস সম্ভবত zlib সংক্ষেপন স্তরটি 1-9 চয়ন করে এবং স্তর 0 এর অর্থ ডিফল্ট অ্যালগরিদম মোটেও ব্যবহৃত হয় না। বেশিরভাগ বাস্তবায়ন সম্ভবত প্রতি সারি ফিল্টারগুলিকে পরিবর্তন করে না, তবে পুরো সময় কেবলমাত্র ফিল্টার ব্যবহার করে।
পাওলি এল

@ পাউলিল: আমি একমত নই, কারণ পিএনজি সংক্ষেপণ সফ্টওয়্যারগুলির সমস্ত তুলনায়, উত্পন্ন চিত্রগুলির আকারের মধ্যে খুব বড় পার্থক্য রয়েছে। যদি সমস্ত পণ্য একই লাইব্রেরির জন্য একই পরামিতি ব্যবহার করে তবে সমস্ত আকার একই, গতি হিসাবে হওয়া উচিত।
harrymc

এই ধরনের তুলনার সাথে আপনার কি কোনও লিঙ্ক আছে?
পাওলি এল

@ পাউলিএল: এই তুলনাটি নিয়ে দ্রুত অনুসন্ধান শুরু হয়েছিল ।
harrymc

@ পাউলিল: আপনি সম্ভবত ঠিক বলেছেন যে পিএনজি-র সংকোচনের মাত্রা দ্বারা জিলিব সংক্ষেপণের স্তরগুলি প্রভাবিত হয়েছে। আমি আমার উত্তরটিকে সেই অনুসারে সংশোধন করেছি, যদিও কোনও কম্প্রেশন সরঞ্জাম ডকুমেন্টই না তারা ঠিক কী করে। সবচেয়ে খারাপ আকারের ফলাফলগুলির সাথে সরঞ্জামগুলির ব্যাখ্যাটি হ'ল তারা কোনও ফিল্টার ব্যবহার করেন না, কেবল zlib সংক্ষেপণ।
harrymc

5

ঠিক আছে, আমি অনুগ্রহের জন্য অনেক দেরি করেছি, তবে যাইহোক আমার উত্তর এখানে answer

পিএনজি সর্বদা ক্ষয়হীন । এটি ডিফল্ট / ইনফ্লেট অ্যালগরিদম ব্যবহার করে, জিপ প্রোগ্রামগুলিতে ব্যবহৃত similar

ডিফল্ট অ্যালগরিদম বাইটগুলির পুনরাবৃত্ত ক্রম অনুসন্ধান করে এবং ট্যাগগুলির সাথে প্রতিস্থাপন করে। সংক্ষেপণ স্তর সেটিংটি বাইট সিকোয়েন্সগুলির সর্বোত্তম সংমিশ্রণটি সনাক্ত করতে প্রোগ্রামটি কত প্রচেষ্টা ব্যবহার করে এবং এর জন্য কত স্মৃতি সংরক্ষিত তা উল্লেখ করে। এটি সময় এবং মেমরির ব্যবহার বনাম সংক্ষেপিত ফাইলের আকারের মধ্যে সমঝোতা। তবে, আধুনিক কম্পিউটারগুলি এত দ্রুত এবং পর্যাপ্ত মেমরি রয়েছে যাতে সর্বাধিক সংক্ষেপণ সেটিং ব্যতীত অন্য খুব কম ব্যবহার করার প্রয়োজন হয়।

অনেক পিএনজি বাস্তবায়ন সংকোচনের জন্য zlib গ্রন্থাগার ব্যবহার করে। জ্লিবের নয়টি সংকোচনের স্তর রয়েছে, 1-9। আমি জিম্পের অভ্যন্তরীণ অংশগুলি জানি না, তবে যেহেতু এটির সংকোচনের স্তর সেটিংস 0-9 (0 = কোনও সংকোচনের নয়) রয়েছে তাই আমি ধরে নেব যে এই সেটিংটি কেবল zlib এর সংক্ষিপ্ত স্তরটি নির্বাচন করে।

ডিফল্ট অ্যালগরিদম হ'ল একটি সাধারণ উদ্দেশ্য সংক্ষেপণ অ্যালগরিদম , এটি ছবি সংকোচনের জন্য ডিজাইন করা হয়নি। অন্যান্য বেশিরভাগ ক্ষতিবিহীন চিত্র ফাইলের ফর্ম্যাটগুলির বিপরীতে, পিএনজি ফর্ম্যাটটি সীমাবদ্ধ নয়। পিএনজি সংক্ষেপণ এই জ্ঞানের সুযোগ নেয় যে আমরা একটি 2D চিত্র সংকোচিত করছি । এটি তথাকথিত ফিল্টার দ্বারা অর্জন করা হয় ।

(ফিল্টারটি এখানে আসলে কিছুটা বিভ্রান্তিকর শব্দ। এটি চিত্রের সামগ্রীগুলিকে আসলে পরিবর্তন করে না, এটি কেবল ভিন্নভাবে কোড করে More আরও সঠিক নামটি ব-দ্বীপ এনকোডার হবে))

পিএনজি স্পেসিফিকেশন 5 টি পৃথক ফিল্টার নির্দিষ্ট করে (0 = কিছুই নয়)। ফিল্টার পূর্বের পিক্সেল থেকে বাম, উপরে, তির্যক বা এর সংমিশ্রণের সাথে পার্থক্য সহ পরম পিক্সেল মানকে প্রতিস্থাপন করে। এটি সংকোচন অনুপাত উল্লেখযোগ্যভাবে উন্নতি করতে পারে। চিত্রের প্রতিটি স্ক্যান লাইন বিভিন্ন ফিল্টার ব্যবহার করতে পারে। এনকোডার প্রতিটি লাইনের জন্য সেরা ফিল্টারটি চয়ন করে সংক্ষেপণটি অনুকূল করতে পারে।

পিএনজি ফাইল ফর্ম্যাট সম্পর্কিত বিশদের জন্য, পিএনজি স্পেসিফিকেশন দেখুন

যেহেতু ভার্চুয়ালি অসীম সংখ্যার সংমিশ্রণ রয়েছে, সেগুলি সব চেষ্টা করা সম্ভব নয়। তাই কার্যকর সংমিশ্রণের জন্য বিভিন্ন ধরণের কৌশল তৈরি করা হয়েছে। বেশিরভাগ চিত্র সম্পাদকরা সম্ভবত ফিল্টারগুলি লাইন লাইন অপ্টিমাইজ করার চেষ্টাও করেন না তবে পরিবর্তে কেবলমাত্র নির্দিষ্ট ফিল্টার ব্যবহার করেছেন (সম্ভবত পঠ)।

একটি কমান্ড লাইন প্রোগ্রাম pngcrush সেরা ফলাফলটি খুঁজতে বেশ কয়েকটি কৌশল চেষ্টা করে। এটি অন্যান্য প্রোগ্রাম দ্বারা তৈরি পিএনজি ফাইলের আকারকে উল্লেখযোগ্যভাবে হ্রাস করতে পারে, তবে বৃহত্তর চিত্রগুলিতে এটি বেশ কিছুটা সময় নিতে পারে। দেখুন উত্স ফোর্জ - pngcrush


3

লসলেস স্টাফে সংকোচনের মাত্রা সর্বদা কেবল এনকোড সংস্থানগুলি (সাধারণত সময়, কখনও কখনও রাম) বনাম বিটরেট হয়। গুণমান সর্বদা 100%।

অবশ্যই, ক্ষতিহীন সংকোচকারীরা কোনও প্রকৃত সংক্ষেপণের গ্যারান্টি দিতে পারে না । এলোমেলো তথ্য সংকোচনের, খুঁজে পাওয়ার মতো কোন প্যাটার্ন নেই এবং কোনও মিল নেই। শ্যানন ইনফরমেশন থিয়োরি এবং সে সব। ক্ষতিহীন ডেটা সংকোচনের পুরো বিষয়টি হ'ল মানুষেরা সাধারণত অত্যন্ত অ-র্যান্ডম ডেটা নিয়ে কাজ করে তবে সংক্রমণ এবং সঞ্চয়ের জন্য, আমরা এটিকে যতটা সম্ভব বিটকে সংকোচিত করতে পারি। আশা করি মূলটির কোলমোগোরভ জটিলতায় যতটা সম্ভব সম্ভব হয় ।

এটি জিপ বা 7 জেনেরিক ডেটা, পিএনজি চিত্র, ফ্ল্যাক অডিও বা এইচ .264 (লসলেস মোডে) ভিডিও হোক না কেন, এটি একই জিনিস। কিছু সংক্ষেপণ অ্যালগরিদম, যেমন lzma (7zip) এবং bzip2 এর সাহায্যে, সংক্ষেপণ সেটিংটি ক্র্যাঙ্ক করা DECODER এর সিপিইউ সময় (bzip2) বা আরও প্রায়শই প্রয়োজনীয় র্যামের পরিমাণ বাড়িয়ে দেবে (lzma এবং bzip2, এবং h.264 আরও রেফারেন্স ফ্রেমের সাথে) । প্রায়শই ডিকোডারটি র‌্যামে আরও ডিকোডড আউটপুট সংরক্ষণ করতে হয় কারণ পরের বাইট ডিকোডিংটি অনেক মেগাবাইট আগে ডিকোড করা একটি বাইটকে বোঝাতে পারে (যেমন, একটি ভিডিও ফ্রেম যা অর্ধেক সেকেন্ডের আগে একটির মতোই 12 ফ্রেমের পিছনে রেফারেন্স সহ এনকোড হবে) )। Bzip2 এর সাথে একই জিনিস এবং একটি বৃহত ব্লকের আকার বেছে নেওয়া, তবে এটি ধীরে ধীরে সংকুচিত হয়। lzma এর একটি ভেরিয়েবল সাইজ ডিকশনারি রয়েছে এবং আপনি এমন ফাইল তৈরি করতে পারেন যা প্রয়োজন হবে।


হুম আমি গ্যারান্টিযুক্ত লসলেস সংকোচনের জন্য সরাসরি ড্রাইভ স্টিপার মোটর এবং সরাসরি মাথা নিয়ন্ত্রণের এক বাস্তবায়ন দেখেছি। আপনার যদি উচ্চ-রেজিস ক্লক উত্স থাকে তবে ম্যানচেস্টার এনকোডিংটি সহজেই পিটানো হয়।
জোশুয়া

@ জোশুয়া: উচ্চ-ঘনত্বের শারীরিক স্টোরেজ ফর্ম্যাটটি ব্যবহার করা ডেটা সংক্ষেপণের মতো নয় ...
সাম্ব

0

প্রথমত, পিএনজি সর্বদা ক্ষয়হীন থাকে। আপাত প্যারাডক্সটি এই কারণে ঘটে যে দুটি ভিন্ন ধরণের সংকোচনের সম্ভাবনা রয়েছে (যে কোনও ধরণের ডেটার জন্য): ক্ষয়ক্ষতিহীন এবং ক্ষতিহীন।

ক্ষতিকারক সংকোচনে বিভিন্ন কৌশল ব্যবহার করে ডেটা (অর্থাত্ ফাইলের আকার) নীচে আনে এবং সমস্ত কিছু রেখে এবং কোনও সান্নিধ্য ছাড়াই নিচে ফেলে। ফলস্বরূপ, এটি সম্ভব যে লসলেস কমপ্রেসন আসলে জিনিসগুলিকে মোটেও সংকুচিত করতে সক্ষম হবে না। (উচ্চ এনট্রপির সাথে প্রযুক্তিগতভাবে ডেটাহীন পদ্ধতিগুলির জন্য সংকোচন করা খুব শক্ত বা এমনকি অসম্ভব হতে পারে)) লসী সংকোচনের ফলে আসল তথ্যটি প্রায় অনুমান করা যায় তবে অনুমানটি অসম্পূর্ণ, তবে নির্ভুলতার এই "দূরে নিক্ষেপ" সাধারণত আরও ভাল সংকোচনের অনুমতি দেয়।

ক্ষয়হীন সংক্ষেপণের একটি তুচ্ছ উদাহরণ এখানে: আপনার যদি কালো রঙের 1000 বারের জন্য মান 1000 বারের চেয়ে 1000 কালো পিক্সেল দিয়ে তৈরি একটি চিত্র থাকে তবে আপনি একটি 1000 পিক্সেল সংক্ষেপিত একটি গণনা (1000) এবং একটি মান (কালো) সঞ্চয় করতে পারেন " চিত্র "মাত্র দুটি সংখ্যায়। (এটি রান-লেংথ এনকোডিং নামক লসহীন সংক্ষেপণ পদ্ধতির একটি অশোধিত রূপ)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.