ইমেজম্যাগিক ব্যবহার করে একটি চিত্র "ডিফ" করুন


178

আমি কীভাবে দুটি চিত্রের মধ্যে পার্থক্য পেতে পারি? আমার আসল চিত্র আছে। কেউ কেউ মূল চিত্রটির হুবহু নকল লিখেছেন। এখন, আমাকে চিত্রটির লিখিত সাথে মূলটির তুলনা করতে হবে এবং কেবল চিত্রের বিন্যাসে লেখাটি বের করতে হবে।

উদাহরণ: আমার কাছে একটি বাড়ির ছবি রয়েছে। কেউ একটি অনুলিপি নিয়ে লিখেছিলেন "হ্যালো!" অনুলিপি। আমি কোনওভাবে দুটি ছবি তুলনা করতে চাই, ঘরটি সরিয়ে ফেলতে চাই এবং "হ্যালো!" শব্দের একটি চিত্র রেখে যেতে চাই।

ইমেজম্যাগিক দিয়ে কি এটি সম্ভব? আমি জানি যে চিত্রগুলির মধ্যে পরিসংখ্যানগত পার্থক্য পাওয়ার উপায় রয়েছে তবে আমি এটি সন্ধান করছি না।


8
ব্যবহার করে দেখুন এই বিভাগে করে ImageMagick ব্যবহার গাইডের!
বেনোইট

1
আমি জানি এই প্রশ্নের করে ImageMagick সম্পর্কে, কিন্তু আমি শুধু একটি লিঙ্ক অন্তর্ভুক্ত করা ছিল Resemble.js "causual" অন্বেষী যিনি অজ্ঞেয়বাদী সমাধান পর হতে পারে।
brichins

প্রথম থেকেই দ্বিতীয় চিত্রের পিক্সেলগুলি বিয়োগ করে 2 টি চিত্রের তুলনা করা যাবে এমন কোনও সরঞ্জাম কি কেউ জানেন? আমি নিজের লেখা না পছন্দ করি।
মার্কাসজে

ইমেজম্যাগিক 7 এর ধারণক্ষমতাযুক্ত হ্যাশ রয়েছে, যা ইনগ্রিয়েট ইমেজ মুহুর্তগুলি ব্যবহার করার একটি কৌশল। এটি এই অর্থে দুর্দান্ত যে এটি ঘূর্ণন, ব্যারেল বিকৃতি, আকার পরিবর্তন, গামা পরিবর্তন, শব্দের পরিচিতি,
জলচরনের

1
@ v.oddou, ধন্যবাদ আমি ডকগুলি পড়েছি এবং আরও কয়েকটি পরীক্ষা করেছি। এটি লাইন অঙ্কনগুলির সাথে খারাপভাবে সঞ্চালিত হয়েছে যা খুব কম জনবহুল এবং অত্যন্ত কম পিক্সেল ঘনত্বযুক্ত। দেখে মনে হচ্ছে পিক্সেল ডেনসিটি হ'ল পিএএসএএসএসএচটির মিল খুঁজে পাওয়া যায়।
ব্রেডি

উত্তর:


320

আমার নিজস্ব প্রিয় এই দুটি:

 compare image1 image2 -compose src diff.png
 compare image1 image2 -compose src diff.pdf

উপরের দুটি কমান্ডের মধ্যে একমাত্র পার্থক্য: প্রথমটি দুটি চিত্রের মধ্যে একটি পিএনজি ফাইল হিসাবে, দ্বিতীয়টির পিডিএফ হিসাবে দৃশ্যমান পার্থক্য দেখায়।

ফলস্বরূপ ডিফ ফাইলটি সমস্ত পিক্সেল প্রদর্শন করে যা লাল রঙের চেয়ে আলাদা। যেগুলি অপরিবর্তিত তাদের সাদা প্রদর্শিত হয়।

স্বল্প ও মধুর.

দ্রষ্টব্য, আপনার চিত্রগুলি একই ধরণের হওয়া উচিত নয় । এমনকি আপনি জেপিইজি, টিআইএফএফ, পিএনজি - এক শর্তে মেশাতে পারেন: চিত্রগুলি একই আকারের (পিক্সেলের চিত্রের মাত্রা) হওয়া উচিত। আউটপুট ফর্ম্যাটটি আউটপুট ফাইলের এক্সটেনশনের দ্বারা নির্ধারিত হয়।

আপনার যদি কোনও কারণে ডিফল্ট (72 ডিপিআই) এর চেয়ে উচ্চতর রেজোলিউশনের প্রয়োজন হয় - তবে কেবল একটি উপযুক্ত -densityপ্যারামিটার যুক্ত করুন:

 compare -density 300 image1 image2 -compose src diff.jpeg

সচিত্র উদাহরণ

উপরের কমান্ডের পরিবর্তনের জন্য ফলাফলের কয়েকটি চিত্র এখানে দেওয়া হল। দ্রষ্টব্য: তুলনা করা দুটি ফাইল এমনকি পিডিএফ ফাইল ছিল , সুতরাং এটি খুব কার্যকর হয় (যতক্ষণ না তারা 1-পেজার হয়)!


বাম: পাঠ্য কেন্দ্রের সাথে চিত্র       : মূল চিত্র       ডান: লাল পিক্সেলের মধ্যে পার্থক্য (= পাঠ্য)। শুধুমাত্র লাল পার্থক্য পিক্সেল;  অভিন্ন পিক্সেল সাদা

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
        diff-compose-default.pdf

এটি একই আদেশ যা আমি উপরোক্ত পরামর্শ দিয়েছি।


বাম: পাঠ্য কেন্দ্রের সাথে চিত্র       : মূল চিত্র       ডান: 'সিগ্রিন' পিক্সেলের মধ্যে পার্থক্য। কেবল সিগ্রিন পার্থক্য পিক্সেল;  অভিন্ন পিক্সেল সাদা

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -compose src \
       -highlight-color seagreen \
        diff-compose-default.pdf

এই কমান্ডটি ডিফল্ট লাল পরিবর্তে পার্থক্য পিক্সেলকে 'সিগ্রিন' তৈরি করতে একটি প্যারামিটার যুক্ত করেছে।


বাম: পাঠ্য কেন্দ্রের সাথে চিত্র       : মূল চিত্র       ডান: নীল রঙের ডিফএস (তবে কিছু প্রসঙ্গের পটভূমি) শুধুমাত্র নীল পার্থক্য পিক্সেল;  হালকা আপ ব্যাকগ্রাউন্ড হিসাবে তুলনা করা চিত্রের প্রথমl

compare \
        porsche-with-scratch.pdf  porsche-original.pdf \
       -highlight-color blue \
        diff-compose-default.pdf

এই কমান্ডটি -compose srcঅংশটি সরিয়ে দেয় - ফলাফলটি হ'ল ডিফল্ট আচরণ compareযা হালকা ব্যাকগ্রাউন্ড হিসাবে 2 টি পৃথক চিত্রের প্রথমটিকে রাখে। (এবার পৃথক পিক্সেলকে নীল রঙে প্রদর্শিত করার জন্য যুক্ত প্যারামিটার সহ This)


আমি বুঝতে পারছি না এই তুলনা ক্লাইটি কোথা থেকে এসেছে? এটি কি ইমেজব্রিকার অংশ? উইন্ডোজ পাওয়া যায়?
কৃষ্ণম

2
@ কৃষ্ণম: 'ইমেজব্রিক' বলে কিছু নেই। আপনি কি ইমেজম্যাগিক বলতে চাইছেন?
কুর্ট ফেফেল

2
@ কৃষ্ণম: প্রশ্নটি একটি চিত্রম্যাগিক সমাধান সম্পর্কে স্পষ্টভাবে জিজ্ঞাসা করেছিল। ইমেজম্যাগিকের v6.x সফ্টওয়্যার স্যুটের একটি অংশে আলাদা আলাদা সি এল এল সরঞ্জাম বলা হয়েছিল 'compare'। ইমেজম্যাগিকের v7.x এর জন্য আপনার 'magick compare'পরিবর্তে চালানো উচিত ।
কুর্ট ফেফেল

আমার খারাপ। (ইমেজব্রিক -> ইমেজম্যাগিক) সংশোধন করার জন্য ধন্যবাদ। আমি একবার চেষ্টা করবো। আমি বাল্ক চিত্রগুলির তুলনা করার জন্যও সরঞ্জামটি দেখছি। আবার সহায়তার জন্য ধন্যবাদ
কৃষ্ণম

@ কৃষ্ণম: "বাল্ক ইমেজ" কী তা আমি জানি না। তবে আমি এখনও বাজি রেখেছি যে সরঞ্জামগুলির ইমেজম্যাগিক স্যুটটি আপনার যা করতে পারে তা করতে পারে।
কার্ট ফেফেল

53

যদিও compareঅনেক অ্যাপ্লিকেশনের জন্য একটি ভাল কাজ আছে, আমি দেখেছি যে কখনও কখনও আমি একটি ভিন্ন পদ্ধতি যখন ইমেজ যা বেশিরভাগ গ্রেস্কেল হয় তুলনা পছন্দ করা, বিশেষ করে:

convert '(' file1.png -flatten -grayscale Rec709Luminance ')' \
        '(' file2.png -flatten -grayscale Rec709Luminance ')' \
        '(' -clone 0-1 -compose darken -composite ')' \
        -channel RGB -combine diff.png

ধারণাটি নিম্নরূপ: উভয় file1.pngএবং file2.pngগ্রেস্কেল রূপান্তর করুন । তারপরে ফলাফলটি চিত্রের লাল চ্যানেল হিসাবে প্রথমটি চিহ্নিত করুন, দ্বিতীয়টি সবুজ চ্যানেল হিসাবে। এই দুটি থেকে darkenকমপোজ অপারেটরটি ব্যবহার করে নীল চ্যানেলটি তৈরি হয় , যার মূল অর্থ সর্বনিম্ন গ্রহণ করা।

সুতরাং উভয় চিত্রের মধ্যে সাদা জিনিসগুলি সাদা থাকে। উভয় চিত্রের মধ্যে কালো যে জিনিসগুলি কালো থাকে যে জিনিসগুলি প্রথম চিত্রটিতে সাদা তবে দ্বিতীয় দিকে কালো, এবং যে জিনিসগুলি দ্বিতীয়টিতে সাদা তবে প্রথম দিকে কালো সবুজ।

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

এখানে চিত্র বর্ণনা লিখুন

আপনি পন্থা একত্রিত ব্যবহার করতে পারেন compareদেখতে যেখানে কিছু পরিবর্তন এবং তারপর আরো বিস্তারিত দেখতে উপরের ব্যবহার কিভাবে এটি পরিবর্তন করেছেন।


2
নিস! আমার কিছু ইন্টারঅ্যাকশন দরকার তাই আমি গিম্পে আপনার পদ্ধতিটি প্রতিলিপি করলাম। রেফারেন্সের জন্য: ১) স্তর হিসাবে চিত্রগুলি লোড করুন, ২) রঙ -> উভয় স্তরকে বিচ্ছিন্ন করুন, ৩) স্তর ট্যাবে উভয় স্তর থেকে আলফা চ্যানেলগুলি সরিয়ে ফেলুন, ৪) একটি স্তরতে জি + বি চ্যানেল নির্বাচন করুন, সমস্ত নির্বাচন করুন এবং চ্যানেলগুলি সাফ করুন কালো রঙ সহ, দ্বিতীয় স্তরের আর + বি চ্যানেলগুলির সাথে একই, 4) স্তর ট্যাবে উপরের স্তরটির জন্য স্ক্রিন মোড সেট করুন।
মাতাজ আমেদ

1
@ পামস্ট্রম: ধন্যবাদ! আমি মূলত এই চিত্রটির তুলনা নিজেই গিম্প ব্যবহার করে করেছি, তবে আমি সরাসরি "ইনার এক্সট্রাক্ট" লেয়ার মোডটি ইনপুট চিত্রগুলিতে ব্যবহার করেছিলাম , সুতরাং সাধারণ অঞ্চলগুলি ধূসর হয়ে যাবে, অন্যদিকে ভিন্নতা কালো হবে এবং অন্যদিকে সাদা হবে । পড়া শক্ত, তবে উত্পন্ন করা দ্রুত এবং এতে রঙিন তথ্য থাকতে পারে। আমি অনুমান করি আপনি আমার কমান্ডটিকে আরও বেশি ঘনিষ্ঠভাবে মেলে যদি আপনি "স্ক্রিন" এর পরিবর্তে "কেবল অন্ধকার" এবং কালো রঙের পরিবর্তে অব্যবহৃত চ্যানেলগুলি ব্যবহার করেন।
এমভিজি

1
কিছু পিডিএফ ইনপুটগুলির কারণে কোনও কারণে গ্রেস্কেল রূপান্তর হওয়ার পরে একটি উল্টানো চিত্র দেখা যায়। এটি -colorspace grayপরিবর্তনের পরিবর্তে ব্যবহার করা হচ্ছে -grayscale Rec709Luminance, তবে এটি রচনাটি গণ্ডগোল করে। যোগ -respect-parenthesesকরার জন্য প্রথম বিকল্প রূপে convertযে যত্ন নিতে।
ব্রেচ্ট ম্যাচিলস

এই পদ্ধতিটি ব্যবহার করে দুটি পিডিএফ পৃষ্ঠা-পৃষ্ঠাতে দৃশ্যমানভাবে পৃথক করার জন্য একটি স্ক্রিপ্ট এখানে রয়েছে: gist.github.com/brechtm/891de9f72516c1b2cbc1 । এটি একটি pdfdiffডিরেক্টরিতে পিডিএফ এর প্রতিটি পৃষ্ঠার জন্য একটি জেপিজি আউটপুট দেয় এবং অতিরিক্তভাবে দুটি পিডিএফের মধ্যে পৃথক পৃষ্ঠাগুলির সংখ্যা মুদ্রণ করে।
ব্রেচ্ট ম্যাচিলস

1
ইমেজম্যাগিক ভি .7..7..7-১০ এ এটি -grayscaleসমর্থিত নয় বলে মনে হয়েছে , আমাকে -colorspace gray@ ব্র্যাচমাচিলস প্রস্তাবিত হিসাবে ব্যবহার করতে হয়েছিল
অস্টিনমার্টন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.