চিত্রগুলির জন্য "ডিফ" উপস্থিত রয়েছে কি?


51

আপনি দুটি টেক্সট ফাইল খুব সহজে diffএবং আরও ভাল এর সাথে মেল্ডের সাথে তুলনা করতে পারেন :

উদাহরণ মেল্ড

আপনি যদি চিত্রগুলির জন্য পৃথক ব্যবহার করেন তবে আপনি এর মতো উদাহরণ পাবেন:

$ diff zivi-besch.tif zivildienst.tif 
Binary files zivi-besch.tif and zivildienst.tif differ

এখানে একটি উদাহরণ:

Http://commons.wikimedia.org/wiki/File:Tux.svg থেকে মূল

আসল চিত্র

সম্পাদিত:

সম্পাদিত

আমি উভয় চিত্রগুলিতে একটি সাদা পটভূমি যুক্ত করেছি এবং এটি পেতে জিম্পগুলি "পার্থক্য" ফিল্টার প্রয়োগ করেছি:

পার্থক্য

এটি একটি খুব সহজ পদ্ধতি যা কোনও পৃথক কীভাবে কাজ করতে পারে তবে আমি আরও ভাল (এবং আরও জটিল) কল্পনা করতে পারি।

আপনি কি এমন কোনও প্রোগ্রাম জানেন যা টেক্সটের জন্য মেল্ডের মতো চিত্রগুলির জন্য কাজ করে?

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


দেখা যাচ্ছে আপনি কোনও এসভিজি চিত্রের সাথে লিঙ্ক করছেন। এটি আসলে বৈধ এক্সএমএল পাঠ্য। অন্যান্য চিত্রের ফর্ম্যাটের ক্ষেত্রে এটি একই রকম হয় না।
ζ--

উত্তর:


57

হ্যাঁ, এই জাতীয় প্রোগ্রাম বিদ্যমান!

করে ImageMagick হয়েছে compareইউটিলিটি, যা চিত্র তুলনা করার বিভিন্ন উপায় আছে।

এটি ইনস্টল করতে:

sudo apt-get install imagemagick imagemagick-doc

দুটি চিত্রের সাথে দর্শনীয়ভাবে তুলনা করা:

compare -compose src tux_orig.png tux_modified.png tux_difference.png

tux_orig.png & tux_modified.png

tux_orig.png tux_modified.png

এই চিত্র দেয়:

চিত্র পার্থক্য

মেট্রিকের মাধ্যমে দুটি চিত্রের তুলনা করা:

কিছু মেট্রিকের মাধ্যমে পার্থক্য আউটপুট করার বিভিন্ন উপায়ও রয়েছে, যেমন:

# compare -verbose -metric PSNR tux_orig.png tux_modified.png tux_difference.png
tux_orig.png PNG 200x232 200x232+0+0 8-bit sRGB 20.6KB 0.000u 0:00.000
tux_modified.png PNG 200x232 200x232+0+0 8-bit sRGB 22.2KB 0.010u 0:00.000
Image: tux_orig.png
  Channel distortion: PSNR
    red: 19.5485
    green: 19.5973
    blue: 19.6507
    alpha: 16.1568
    all: 18.4517
tux_orig.png=>tux_difference.png PNG 200x232 200x232+0+0 8-bit sRGB 12.3KB 0.030u 0:00.020

কিছু মেট্রিক বিকল্প:

AE     absolute error count, number of different pixels (-fuzz effected)
FUZZ   mean color distance
MAE    mean absolute error (normalized), average channel error distance
MEPP   mean error per pixel (normalized mean error, normalized peak error)
MSE    mean error squared, average of the channel error squared
NCC    normalized cross correlation
PAE    peak absolute (normalize peak absolute)
PSNR   peak signal to noise ratio
RMSE   root mean squared (normalized root mean squared)

চিত্রগুলির তুলনা করার জন্য অনেকগুলি উপায় রয়েছে, পরবর্তী পদ্ধতির তুলনায় ইমেজম্যাগিক্স বিভাগটি দেখুন ।


একীকরণের উপায় আছে? বা লক্ষ্যটি পেতে মূলটিতে পার্থক্যটি প্যাচ করবেন?
সিএমসিডিগ্রাগনকাই

@CMCDragonkai ইমেজম্যাগিক খুব শক্তিশালী। সঠিক অনুরোধটি আমি জানি না, তবে আপনি চিত্রগুলিতে ফিল্টার এবং চেইন অপারেশন করতে পারেন এবং একটি নতুন তৈরি করতে পারেন। সুতরাং আমি নিশ্চিত যে আপনি কোনও চিত্রম্যাগিক স্ক্রিপ্টের সাথে "মার্জ" করতে পারবেন।
এইচআরজে

1
ইমেজম্যাগিক আসলেই যাদু!
ব্রেইন 90

কীভাবে এই এর সাথে তুলনা ব্যবহার করা যায়, তবে কোনও পার্থক্য চিত্র তৈরি না করে?
ব্যবহারকারী 643722

6

এই প্রশ্নের 2012 সালে ফিরে জিজ্ঞাসা ছিল, এবং এটি 2017. এখন আমরা অ ওপেন সোর্স প্রোগ্রাম আছে বিয়ন্ড তুলনা ইমেজ তুলনা করার, এবং এটি নটিলাস মধ্যে সংহত করে। একটি ডিরেক্টরি কাঠামো জুড়ে একই ধরণের চিত্রগুলি খুঁজে পাওয়ার জন্য আমাদের পুনরায় গিকিরও ছিল (পুনরাবৃত্তভাবে)।

আই তুলনার বাইরে চিত্র পার্থক্য সন্ধান করা

.Deb প্যাকেজগুলি তুলনা ছাড়িয়ে ডাউনলোড করতে এই লিঙ্কটি ক্লিক করুন

আপনি যে প্যাকেজটি ডাউনলোড করেছেন সেই ডিরেক্টরিতে গিয়ে প্যাকেজটি ইনস্টল করুন এবং টাইপ করুন: sudo dpkg -i YourPackageName.deb যা এই মুহুর্তে bcompare-4.2.2.22384_amd64.deb নামে পরিচিত , তাই আপনি টাইপ করতে পারেন: sudo dpkg -i bcompare- 4.2.2.22384_amd64.deb

নটিলাসে কাজটি ইনস্টল করার জন্য প্লাগইনটি সম্পূর্ণ করতে, আপনাকে লগ আউট করতে হবে এবং তারপরে আবার ফিরে আসতে হবে কারণ নটিলাস ব্যাকগ্রাউন্ডে এটি চালু না থাকলেও চলছে।

এটি ইনস্টল হয়ে গেলে এবং প্লাগইনটি সঠিকভাবে কাজ করার পরে আপনি:

  1. নটিলাস খুলুন এবং প্রথম চিত্রটিতে ব্রাউজ করুন
  2. প্রসঙ্গ মেনু আনতে প্রথম চিত্রটিতে ডান ক্লিক করুন এবং তুলনা / মার্জ করার জন্য বাম ফাইল নির্বাচন করুন
  3. দ্বিতীয় ছবিতে ব্রাউজ করুন
  4. দ্বিতীয় চিত্রটিতে রাইট-ক্লিক করুন এবং 'NameOfFirstImageFile' এর সাথে তুলনা করুন নির্বাচন করুন যেখানে নামাফফার্সস্টিমেজফাইলে আপনি ধাপ 2-এ নির্বাচিত ফাইলটির নাম।
  5. চিত্রগুলি তারপরে তুলনার বাইরে খুলবে এবং এটি দেখতে এরকম কিছু দেখাবে:

চিত্র তুলনা ছাড়িয়েও

২। গীকির সাথে অনুরূপ / সদৃশ চিত্রগুলি সন্ধান করা

  1. এটি একটি টার্মিনাল মধ্যে বেঁধে Geeqie ইনস্টল করুন: sudo অ্যাপ্লিকেশন ইনস্টল করুন
  2. গীকি খুলুন, এবং আপনি যে ডিরেক্টরিটি স্ক্যান করতে চান তা ব্রাউজ করুন।
  3. আপনি যে ডিরেক্টরিটি স্ক্যান করতে চান তার ডানদিকে ক্লিক করুন এবং ডুপ্লিকেট সন্ধান করুন নির্বাচন করুন ... কেবলমাত্র সেই ডিরেক্টরিটি স্ক্যান করতে, বা সেই ডিরেক্টরিটি এবং এর অধীন সমস্ত ডিরেক্টরি স্ক্যান করতে ডুপ্লিকেট পুনরাবৃত্তির সন্ধান করুন ... নির্বাচন করুন ।

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

  1. নীচের বাম কোণে ড্রপ-ডাউন তালিকার তুলনা করে ব্যবহার করে , আপনি চেকসাম দ্বারা, ফাইলের নাম দ্বারা বা অনুরূপ স্তরের দ্বারা সদৃশগুলি সন্ধান করতে পারেন। সাদৃশ্য বৈশিষ্ট্যটি দুর্দান্ত if যদি আপনি চিত্রগুলি ক্রপ, ঘোরানো বা পুনরায় আকার দিতেন, আপনার এখন আর আমাদের প্রয়োজন হয় না, যখন আমরা সামাজিক মিডিয়া এবং এ জাতীয় পোস্টগুলিতে ছবিগুলি ক্রপ / আকার পরিবর্তন করতে পারি when


0

আমি নিম্নলিখিতটি দিয়ে শেষ করেছি:

~/.gitconfig

যুক্ত করা

[diff "image"]
    command = simple-imagediff

সহজ-imagediff

আমি নিম্নলিখিতগুলিতে যুক্ত করেছি ~/.local/bin/simple-imagediff:

#!/usr/bin/env python

# Simple Image Diffs
# ==================
#
# How to Install
# --------------
#
# Download the script somewhere on $PATH as 'simple-imagediff' with +x:
#
# $ cd ~/bin
# $ wget -O simple-imagediff https://raw.github.com/gist/1716699/simple-imagediff.py
# $ chmod +x simple-imagediff
#
# Prerequisites
# -------------
#
# The script should work out-of-the box on Ubuntu 11.10. On other OS'es you may
# need to install PIL and Gtk3.
#
# Git Setup
# ---------
#
# In ~/.gitconfig, add:
#
# [diff "image"]
#   command = simple-imagediff
#
# In your project, create .gitattributes file and add (this enables the custom
# diff tool above):
#
# *.gif diff=image
# *.jpg diff=image
# *.png diff=image
#
# Try It
# ------
#
# $ git diff path/to/file.png
#
# NOTE: file.png must be versioned and the working copy must be different.

import os
import sys

import Image

from gi.repository import Gdk, Gtk


class SimpleImageDiffWindow(Gtk.Window):
    def __init__(self, left, right):
        Gtk.Window.__init__(self,
                            title="Simple Image Diff (%s, %s)" % (left, right))
        self.set_default_size(640, 480)
        align = Gtk.Alignment()
        align.set_padding(10, 10, 10, 10)
        box = Gtk.HBox(homogeneous=True, spacing=10)
        box.add(self._create_image_box(left))
        box.add(self._create_image_box(right))
        align.add(box)
        self.add(align)
        self.resize(1, 1)
        self.set_position(Gtk.WindowPosition.CENTER)

    def _create_image_box(self, image_file):
        box = Gtk.VBox(spacing=10)
        frame = Gtk.Frame()
        image = Gtk.Image()
        image.set_from_file(image_file)
        title = Gtk.Label(label="W: %dpx  |  H: %dpx" %
                          Image.open(image_file).size)
        frame.add(image)
        box.pack_start(frame, True, True, 0)
        box.pack_end(title, False, False, 10)
        return box


def _halt(message, code):
    sys.stderr.write("[ERROR] %s\n" % message)
    sys.exit(0 << code)


def _verify_file_exists(target):
    if not os.path.exists(target):
        _halt("The file '%s' does not exists." % target, 2)

if __name__ == '__main__':
    if len(sys.argv) < 3:
        _halt('Not enough arguments.', 1)
    _verify_file_exists(sys.argv[1])
    _verify_file_exists(sys.argv[2])
    app = SimpleImageDiffWindow(sys.argv[1], sys.argv[2])
    app.connect('delete-event', Gtk.main_quit)
    app.show_all()
    Gtk.main()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.