অনুপস্থিত আরজিবি চ্যানেলটি পুনর্গঠন করুন


11

প্রাকৃতিক দৃশ্যের এই ফটোগ্রাফগুলি দেখুন, এর মধ্যে একটি আরজিবি চ্যানেল নিয়ে গেছে:

কোন লাল সঙ্গে একটি বর্ণহীন বন

উত্স (লাল সহ): https://en.wikedia.org/wiki/File:Altja_j%C3%B5gi_Lahemaal.jpg

অ্যান্টার্কটিক তীরে যা সবুজ নেই

উত্স (সবুজ সহ): https://commons.wikimedia.org/wiki/Fileferences007_mather-lake_hg.jpg

একটি নীল ছাড়া একটি লাল শিয়াল

উত্স (নীল সহ): https://commons.wikimedia.org/wiki/File:Fox_01.jpg

এমনকি চ্যানেলগুলির একটি ছাড়াই, আপনি সম্ভবত কিছু নির্দিষ্ট জিনিসগুলির রঙগুলি নির্ধারণ করতে পারেন, বা অনুপস্থিত চ্যানেলের পুনর্গঠন সঠিক হলে কমপক্ষে একটি ভাল ধারণা থাকতে পারে।

উদাহরণস্বরূপ, এখানে একটি লাল চ্যানেলযুক্ত প্রথম ছবিটি এতে যুক্ত করা হয়েছে যা কেবল এলোমেলো শব্দের:

শব্দ 1 সঙ্গে ফটো যোগ করা হয়েছে

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


আপনার কাজটি এমন একটি প্রোগ্রাম তৈরি করা যা কোনও চ্যানেল মুছে ফেলা এমন একটি ছবি নেবে এবং অনুপস্থিত চ্যানেলটি যা বিশ্বাস করে সেটি পুনর্গঠন করে যতটা সম্ভব কাছাকাছি আসল চিত্রটি আনুমানিক করার চেষ্টা করবে।

অনুপস্থিত চ্যানেলটি মূল চিত্রের চ্যানেলের সাথে কতটা ঘনিষ্ঠভাবে মিলছে, সেই চিত্রটির শতাংশের গণনা করে যেখানে সেই চ্যানেলের মানগুলি মূল চিত্রের প্রকৃত মানের 15 ডলার (অন্তর্ভুক্ত) এর মধ্যে রয়েছে সেখানে স্কোর করা হবে (যেখানে মানগুলি একটি আদর্শ 8-বিট রঙ চ্যানেল হিসাবে 0 থেকে 255 পর্যন্ত বিস্তৃত)।

আপনার প্রোগ্রামটি যে পরীক্ষাগুলিতে স্কোর করা হবে সেগুলি এখানে পাওয়া যাবে (9.04 মেগাবাইট জিপ ফাইল, 6 চিত্র)। বর্তমানে এটিতে উপরের তিনটি উদাহরণ চিত্র এবং তাদের মূলগুলি রয়েছে তবে আমি একবারে সম্পূর্ণ স্যুট তৈরি করার জন্য আরও কয়েকটি যুক্ত করব।

প্রতিটি চিত্র ছোট করে 1024 x 768 এ কেটে নেওয়া হয়েছে, যাতে আপনার স্কোরের ওজনের ওজন হবে। প্রোগ্রামটি প্রদত্ত সহনশীলতার মধ্যে সর্বাধিক পিক্সেল পূর্বাভাস দিতে পারে।


1
আপনি কি স্কোরিং প্রোগ্রাম লিখতে পারেন, যেমন পাইথনে?
orlp

আমি আগামীকাল সেখানে যাব। এই মুহূর্তে আমার বিছানায় যেতে হবে।
জো জেড।

প্রোগ্রামের রানটাইম সীমা আছে?
বিলম্ব করুন

@ থামুন প্রোগ্রামটি আউটপুট উত্পাদন করার জন্য সীমাটি হ'ল আপনার ধৈর্য।
জো জেড।

উত্তর:


17

পাইথন 3 + বিজ্ঞান-চিত্র

কেবল দু'জনের গড় অনুপস্থিত চ্যানেলের রঙ সেট করে।

import sys
from skimage import io, color

im = io.imread(sys.argv[1])
h, w, c = im.shape

removed_channel_options = {0, 1, 2}
for y in range(h):
    for x in range(w):
        if len(removed_channel_options) == 1: break
        removed_channel_options -= {i for i, c in enumerate(im[y][x]) if c > 0}
removed_channel = removed_channel_options.pop()

for y in range(h):
    for x in range(w):
        p = [float(c) / 255 for c in im[y][x][:3]]
        p = [sum(p)/2 if i == removed_channel else p[i]
             for i in range(3)]
        im[y][x] = [int(c*255) for c in p] + [255]*(c == 4)

io.imsave(sys.argv[2], im)

এবং পুনরুদ্ধার করা চিত্রগুলি:

বন। জংগল শিয়াল বরফপূর্ণ


3
অন্য দু'জনের গড় - আমি অনুমান করার চেয়ে স্পষ্টতই অনেক বেশি নির্ভুল (বিষয়গতভাবে)। +1 টি।
ডিজিটাল ট্রমা

2
তারা অনেক আগে হাতের রঙিন ডাগুয়েরিওটাইপগুলির স্মরণ করিয়ে দেয়। খুব সুন্দর. +1

6

লুয়া, লাভ 2 ডি

অনুপস্থিত চ্যানেলটি কেবলমাত্র দুটি অবশিষ্ট চ্যানেলের চেয়ে ছোটতে সেট করে।

local inp = love.image.newImageData(arg[2])

local channels = {1, 2, 3}
local removed = nil
local removed_options = {true,true,true}

inp:mapPixel(function(x,y,r,g,b)
    local o = {r,g,b}
    for k,v in pairs(o) do
        if v > 0 then
            removed_options[k] = false
        end
    end
    return r,g,b
end)

for k,v in pairs(removed_options) do
    if v then
        removed = k
        break
    end
end
inp:mapPixel(function(x,y,r,g,b)
    local o = {r,g,b}
    o[removed] = math.min(o[removed%3+1], o[(removed+1)%3 + 1])
    return unpack(o)
end)

inp:encode('png', IMAGE:gsub("%.png", "2.png"))

কমান্ড লাইনে একটি যুক্তি হিসাবে ফাইলের নাম নেয় as

বন। জংগল শিয়াল তুষার

বোনাস

আমি মানটি আটকে রেখে অনুপস্থিত চ্যানেলটি 255- (a + b) এ সেট করার চেষ্টা করেছি। হিসাবে "ফাঁক পূরণ"। ফলাফলগুলি অকেজো তবে গৌরবময়।

ফরেস্ট রেড টিল শিয়াল হলুদ নীল স্নো বেগুনি সবুজ

এবং 255- (এ + বি) / 2 সহ

বন রেড সায়ান বোরিং ফক্স হলুদ নীল বোরিং স্নো বেগুনি সবুজ বোরিং


চিত্রগুলি অন্যান্য উত্তরের চেয়ে আরও বাস্তবসম্মত দেখায়। দারূন কাজ! কৌতূহলের বাইরে আপনি যদি 255- (a + b) / 2 এর পরিবর্তে (ক্ল্যাম্পিংয়ের প্রয়োজন নেই) করেন তবে কী হবে?
ইটিএইচ প্রডাকশনগুলি

ফলাফলগুলি উপরে পোস্ট করাগুলির একটি কম স্যাচুরেটেড সংস্করণ। গিগলসের উত্তরগুলিতে আমি তাদের যুক্ত করব।
এটাকো

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