কিক্সেল - কোয়ান্টাম পিক্সেল


35

ভূমিকা

একটি কিক্সেল হল কোয়ান্টাম পিক্সেল। একটি শাস্ত্রীয় পিক্সেলের অনুরূপ, এটি 3 পূর্ণসংখ্যার মান (লাল, সবুজ, নীল) দিয়ে উপস্থাপিত হয়। তবে কিক্সেল সংমিশ্রণের পরিবর্তে এই 3 টি রাজ্যের একটি সুপার পজিশনে রয়েছে। এই সুপার পজিশনটি কেবলমাত্র ক্লিক্সাল পর্যবেক্ষণ না হওয়া অবধি স্থায়ী হয় যেখানে এটি তিনটি ধ্রুপদী পিক্সেলের একটিতে পতিত হয়; RGB(255,0,0), RGB(0,255,0)এবং RGB(0,0,255)

সবিস্তার বিবরণী

  • প্রতিনিধিত্ব
    • প্রতিটি quixel 0 এবং 255 মধ্যে 3 পূর্ণসংখ্যার একটি অ্যারের হিসাবে প্রতিনিধিত্ব করা হয় r, gএবং bযথাক্রমে।
  • সুপার পজিশন
    • প্রতিটি quixel দ্বারা প্রতিনিধিত্ব লাল, নীল ও সবুজ দেশের মধ্যে একটি সুপার পদে আছেন R, Gএবং Bযথাক্রমে।
  • পর্যবেক্ষণ
    • যখন প্রতিটি কিক্সেল পর্যবেক্ষণ করা হয় এটি তিনটি রাজ্যের একটিতে পতিত হয়। প্রতিটি ধ্রুপদী রাষ্ট্রের সম্ভাবনা হ'ল R = (r + 1) / (r + g + b +3), G = (g + 1) / (r + g + b + 3) এবং B = (b + 1) / (r + g + b + 3)। এইভাবে প্রতিটি শাস্ত্রীয় রাষ্ট্র সর্বদা প্রদর্শিত হওয়ার অ-শূন্য সম্ভাবনা হিসাবে।
  • ইনপুট
    • ফাংশন বা প্রোগ্রামটির জন্য কিক্সেলের একটি চিত্র নেওয়া উচিত। এটি কীভাবে এটি করে তা নমনীয়। একটি বহু-মাত্রিক অ্যারে ব্যবহার করে একটি ফাইলের নাম ইত্যাদি সব গ্রহণযোগ্য।
  • আউটপুট
    • ফাংশন বা প্রোগ্রামটি ক্লাসিকাল পিক্সেলের একটি চিত্র তৈরি করে। এই উত্পাদিত চিত্রের জন্য ডেটা কাঠামোটি নমনীয়। মনে রাখবেন যে, পিক্সেল সব এই তিনটি এক হতে হবে: RGB(255,0,0), RGB(0,255,0)এবংRGB(0,0,255)
    • আউটপুট করা উচিত হবে না নির্ণায়ক ; এগুলি কোয়ান্টাম পিক্সেল! একই ইনপুটটির ফলাফল বিভিন্ন আউটপুটগুলিতে হওয়া উচিত।
    • যদি আপনার ভাষাতে কোনও এলোমেলো সংখ্যা তৈরির উপায় না থাকে তবে আপনি ইনপুট হিসাবে এলোমেলো বাইট নিতে পারেন
  • স্কোরিং

চিত্র

মোনালিসা দ্বারা লিওনার্দো দ্য ভিঞ্চি মোনালিসা

তারকাময় রাত দ্বারা ভিনসেন্ট ভ্যান গখ এখানে চিত্র বর্ণনা লিখুন

সালভাদোর ডালি দ্বারা স্মৃতিচারণের দৃ .়তা এখানে চিত্র বর্ণনা লিখুন

টেডি রুজভেল্ট ভি.এস. বিগফুট দ্বারা SharpWriter এখানে চিত্র বর্ণনা লিখুন


চিত্রের ফাইলের নাম / ইউআরএল কি কোনও ইনপুট আর্গুমেন্ট হতে পারে?
লুইস মেন্ডো

2
মোনা লিসার সেই জেপিইজি চিত্র আউটপুট চিত্রগুলিতে 16x16 বিশিষ্ট ভিজ্যুয়াল আর্টফ্যাক্ট তৈরি করছে।
wizzwizz4

1
@ wizzwizz4 আসলে তা হয় না। এটি ডাউনসাইজ পূর্বরূপ যা প্রবন্ধ আছে। একটি চিত্র এটি পূর্ণ আকার দেখতে ক্লিক করুন। আমার সন্দেহ হয় যে এটি কেবলমাত্র সেই চিত্রের নির্দিষ্ট প্রস্থ যা প্রভাব দেয়।
অ্যাডম

2
আপনার কোয়ান্টাম স্পেসটি RGBKযেখানে ছিল সেখানে আপনি আরও ভাল (ভিজ্যুয়াল) ফলাফল পাবেন K=255*3-R-G-B, তারপরে আপনার কোয়ান্টাম পিক্সেলগুলি 4-এর মধ্যে যে কোনও একটি করুন (যদি কে নির্বাচিত হয় তবে প্রদর্শন করুন (0,0,0) in সুস্পষ্ট উপায়ে 3s থেকে 4 এস পরিবর্তন করা, কে যুক্ত করা যখন আপনি আর + জি + বি ইত্যাদি যুক্ত করবেন)। এটি করার পরে অস্পষ্টতার সাথে মূলটির একটি সুন্দর শালীন কোলাহল অনুলিপি পুনর্গঠন করা উচিত। (কে আপনি কালো
ভাব

2
@ টিএলডাব্লু যদি আপনার ভাষাতে কোনও এলোমেলো সংখ্যা তৈরির উপায় না থাকে তবে আপনি ইনপুট হিসাবে এলোমেলো বাইট নিতে পারেন
ননলাইনফ্রুট

উত্তর:


13

ডায়ালগ এপিএল , 23 21 19 বাইট

(আর, জি, বি) ট্রিপল্টের সারণী নেয়।

মাইল 'অ্যালগোরিদম দ্বারা অনুপ্রাণিত

সূচকের টেবিলটি {(255, 0, 0), (0, 255, 0), (0, 0, 255) s এ দেয়} মারাত্মক অপব্যয়।

(?∘≢⊃⊢)¨(⊂⍳3)/¨⍨1+⊢

(
?∘≢এলোমেলো সূচক প্রতিটি থেকে
নির্বাচন করে

(
সম্পূর্ণ
⍳3প্রথম তিনটি সূচক
)/¨⍨প্রতিটি দ্বারা প্রতিলিপি

1+⊢ বর্ধিত ত্রিগুণ

TryAPL!


পুরনো সংস্করণ

0-ভিত্তিক সূচকের টেবিলটি {(255, 0, 0), (0, 255, 0), (0, 0, 255) s এ দেয়

{+/(?0)≥+\(1+⍵)÷3++/⍵}¨

{... }the টেবিলের প্রতিটি কিক্সেলের জন্য, এটি সন্ধান করুন:

+/ যোগফল (অর্থাত সত্যের গণনা)

(?0)≥ একটি এলোমেলো 0 <সংখ্যা <1 এর চেয়ে বড় বা সমান

+\ যোগফলের যোগফল

(1+⍵)÷ বর্ধিত আরজিবি মানগুলি ভাগ করে

3+ তিনটি প্লাস

+/⍵ কিক্সেলের যোগফল

নোট: Dyalog APL আপনি বেছে দেয় মধ্যে congruential জেনারেটরের রৈখিক Lehmer , Mersenne প্রতারক , এবং অপারেটিং সিস্টেম এর RNG ¹ ² এর

উদাহরণস্বরূপ, চিত্র:

┌──────────┬──────────┬───────────┬───────────┬─────────┐
52 241 198148 111 45197 165 1809 137 120  46 62 75 
├──────────┼──────────┼───────────┼───────────┼─────────┤
81 218 1040 0 255   0 255 0    181 202 116122 89 76
├──────────┼──────────┼───────────┼───────────┼─────────┤
181 61 34 84 7 27   233 220 24939 184 160 255 0 0  
└──────────┴──────────┴───────────┴───────────┴─────────┘

দিতে পারেন

┌─┬─┬─┬─┬─┐
10221
├─┼─┼─┼─┼─┤
22112
├─┼─┼─┼─┼─┤
02120
└─┴─┴─┴─┴─┘

লক্ষ্য করুন যে তিনটি "খাঁটি" কিক্সেলগুলি কীভাবে তাদের নিজ নিজ রঙগুলিতে পতিত হয়েছে।

অনলাইনে চেষ্টা করুন!

ভেঙে পড়েছে মোনা লিসা


8

গণিত, 53 বাইট

RandomChoice[255#+1->IdentityMatrix@3]&~ImageApply~#&

বেনামে ফাংশন। একটি গাণিতিকাকে Imageইনপুট হিসাবে নেয় এবং Imageআউটপুট হিসাবে ফেরত দেয় । নোট করুন যে ইনপুট চিত্রটিতে অবশ্যই একটি আরজিবি রঙের স্থান থাকতে হবে।


এটা কিভাবে কাজ করে?
গ্রিনএজজেড

2
@GreenAsJade <...>~ImageApply~#ছবিতে সব পিক্সেল ওভার একটি ফাংশন প্রযোজ্য হয় এবং RandomChoice[255#+1->IdentityMatrix@3]3 × 3 পরিচয় ম্যাট্রিক্স একটি সারিতে উত্পাদন করতে কিছু ভরযুক্ত RNG ব্যবহার (অর্থাত {1, 0, 0}, {0, 1, 0}বা {0, 0, 1}), লাল, সবুজ, অথবা নীল যা অনুরূপ।
LegionMammal978

5

সি #, 366 243 বাইট

এটি গল্ফ করার জন্য @ লেটলকোডারকে প্রচুর ধন্যবাদ!

var r=new Random();c=>{double t=c.R+c.G+c.B+3,x=(c.R+1)/t,d=r.NextDouble();return d<=x?Color.Red:d<=x+(c.G+1)/t?Color.Lime:Color.Blue;};b=>{fo‌​r(int x=0,y;x<b.Width;x++)for(y=0;y<b.Height;y++)b.SetPixel(x,y,g(‌​b.GetPixel(x,y)));re‌​turn b;};

মৌলিক ধারণা:

using System;
using System.Drawing;
static Random r = new Random();

static Image f(Bitmap a) {
    for (int x = 0; x < a.Width; x++) {
        for (int y = 0; y < a.Height; y++) {
            a.SetPixel(x, y, g(a.GetPixel(x, y)));
        }
    }
    return a;
}

static Color g(Color c) {
    int a = c.R;
    int g = c.G;
    double t = a + g + c.B + 3;
    var x = (a + 1) / t;
    var y = x + (g + 1) / t;
    var d = r.NextDouble();
    return d <= x ? Color.Red : d <= y ? Color.Lime : Color.Blue;
}

উদাহরণ:

মোনালিসা

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

তারকাময় রাত

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

স্মৃতি জেদ

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

টেডি রুজভেল্ট ভি.এস. বিগফুট

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

এখানে আরও কয়েকটি উদাহরণ সহ একটি আপডেট করা ইমগুর অ্যালবাম রয়েছে, এটি দেখানোর জন্য যে এটি অ-নিরপেক্ষবাদী।


6
কালার.লাইম খাঁটি সবুজ রঙ। ভবিষ্যতের রেফারেন্সের জন্য, এখানে পরিচিত রঙের টেবিলটি
দুধ

1
হেরস 237 বাইটের জন্য একটি গল্ফযুক্ত সংস্করণ: var r=new Random();c=>{double t=c.R+c.G+c.B+3,x=(c.R+1)/t,d=r.NextDouble();return d<=x?Color.Red:d<=x+(c.G+1)/t?Color.Lime:Color.Blue;};b=>{for(int x=0,y;x<b.Width;x++)for(y=0;y<b.Height;y++)b.SetPixel(x,y,g(b.GetPixel(x,y)));return b;};এবং এখনও আরও কিছু উন্নতি করা যেতে পারে
TheLethalCoder

এর প্রকৃতপক্ষে 237 বাইট অতিরিক্ত বাইটগুলি অদৃশ্য অক্ষর যা আমার বিশ্বাস কোড মন্তব্যে যুক্ত হয়েছে
TheLethalCoder

4

পাইথন 2, 172 166 162 বাইট

দ্বিতীয় এবং তৃতীয় ইনডেন্ট স্তরগুলি যথাক্রমে একটি কাঁচা ট্যাব এবং কাঁচা ট্যাব প্লাস একটি স্থান; এটি মার্কডাউনের সাথে সত্যিই খারাপভাবে খেলছে , তাই ট্যাবগুলি দুটি স্পেস দ্বারা প্রতিস্থাপিত করা হয়েছে।

from random import*
i=input()
E=enumerate
for a,y in E(i):
 for b,x in E(y):
  t=sum(x)+3.;n=random()
  for j,u in E(x):
   n-=-~u/t
   if n<0:i[a][b]=j;break
print i

অ্যাডমের এপিএল উত্তরের অনুরূপ ইনপুট / আউটপুট ফর্ম্যাট ব্যবহার করে । ইনপুটটি আরজিবি টিপলসের একটি 2 ডি অ্যারে; আউটপুট একটি 2 ডি অ্যারে 0, 1অথবা 2যথাক্রমে লাল, সবুজ ও নীল উপস্থাপন করে। উদাহরণ স্বরূপ:

$ echo "[[(181,61,34),(39,184,160),(255,0,0)],[(84,7,27),(123,97,5),(12,24,88)]]" | python quixel.py
[[2, 2, 0], [0, 0, 0]]

নীচে আমার পুরানো পাইথন 3 উত্তর পিআইএল ব্যবহার করে দেওয়া হয়েছে।

পাইথন 3 + পিআইএল, 271 250 245 243 বাইট

import random as a,PIL.Image as q
i=q.open(input())
w,h=i.size
for k in range(w*h):
 m=k//h,k%h;c=i.getpixel(m);t=sum(c)+3;n=a.random()
 for j,u in enumerate(c):
  n-=-~u/t
  if n<0:z=[0]*3;z[j]=255;i.putpixel(m,tuple(z));break
i.save('o.png')

প্রতি পিক্সেলের উপরে আইট্রেট করে এবং এটিতে কিক্সেল ফাংশন প্রয়োগ করে। ফাইলের নামটি ইনপুট হিসাবে গ্রহণ করে এবং এর আউটপুটটিকে সংরক্ষণ করে o.png

এখানে কিছু ফলাফল রয়েছে:

$ echo mona-lisa.jpg | python quixel.py

মোনা লিসা, কিক্সেলাইজড

$ echo starry-night.jpg | python quixel.py

স্টারি নাইট, কিক্সেলাইজড

$ echo persistence-of-memory.jpg | python quixel.py

মেমরির দৃ Pers়তা, কিক্সেলাইজড

$ echo roosevelt-vs-bigfoot.jpg | python quixel.py

টেডি রুজভেল্ট বনাম বিগফুট, কিক্সেলাইজড


@ ডডি সম্ভবত কারণ এটি একটি পিআরএনজি এবং কোনও ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত আরএনজি নয়।
someonewithpc

@ সোমোনউইথপিসি ওহ আসলে, আমি আমার ফোনে দেখার সময় এই প্রশ্নটি লিখেছিলাম, যেখানে সর্বশেষ চিত্রটিতে গ্রিডের মতো নিয়মিত প্যাটার্ন রয়েছে তবে এখন কম্পিউটারে দেখা যায়, এটি এই প্রভাবটি সহ প্রথম চিত্র।
ডডি

@ ডডি ওহ, হ্যাঁ! আপনার ফোনে ইমেজ টিপতে চেষ্টা করুন: প্রভাবগুলি টগল হবে! আমার ধারণা এটি চিত্রের নমুনা সম্পর্কে ...
someone

@ ডডি আপনার প্রথম প্রশ্নটি মুছে ফেলতে পারে, তাই আমরা মনে করি না আপনি ঘন পতাকাের লাল
রেখাচিত্রমালা

4

আর, 58 বাইট

mapply(function(r,g,b)rmultinom(1,1,c(r+1,g+1,b+1)),r,g,b)

ইনপুট তিন সাংখ্যিক অনুষ্ঠিত ভেক্টর গঠিত r, gএবং bযথাক্রমে।

আমরা এক সমষ্টি সম্ভাব্যতা স্বাভাবিক, যে স্বয়ংক্রিয়ভাবে ঘটে প্রয়োজন হবে না rmultinom

আউটপুট ফর্ম হয়

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    0    0    0    0    0    0     0
[2,]    0    0    0    1    0    0    1    1    1     0
[3,]    1    1    1    0    1    1    0    0    0     1

যেখানে 1প্রতিটি কলামে একটি একক আছে। 1"আর" পিক্সেল, দ্বিতীয় সারির "জি" এবং "বি" এর জন্য তৃতীয় সারিতে প্রথম সারিতে রয়েছে।



4

জে, 20 18 17 বাইট

(>:({~?@#)@##\)"1

ইমেজের সাথে মাত্রা একটি অ্যারে হিসাবে ইনপুট এক্স W 255 আউটপুট মাত্রা একটি টেবিল হয় - এক্স 3 পরিসর 0 পূর্ণসংখ্যার যেমন আরজিবি মানের প্রতিনিধিত্ব এক্স W যেখানে 1 (255, 0, 0 একজন আরজিবি মান ), 2 হ'ল (0, 255, 0), এবং 3 (0, 0, 255)।

ব্যাখ্যা

()"1প্রতিনিধিত্ব করে যে, এই ক্রিয়াটির ইনপুটে র্যাঙ্ক 1 প্রতিটি অ্যারের প্রয়োগ করা, যার মানে হল প্রতিটি ক্ষেত্রে প্রযোজ্য হবে পিক্সেল

>:({~?@#)@##\  Input: array [R G B]
>:             Increment each, gets [R+1, G+1, B+1]
           #\  Gets the length of each prefix of [R G B], forms [1 2 3]
          #    Make a new array with R+1 copies of 1, G+1 copies of 2,
               and B+1 copies of 3
  (     )@     Operate on that array
       #         Get the length of the array of copies, will be R+G+B+3
     ?@          Generate a random integer in the range [0, R+G+B+3)
   {~            Select the value at that index from the array of copies and return

উদাহরণ


1
আপনার মোনা লিসার অন্যদের কাছে আলাদা রঙের স্কিম রয়েছে। আপনি কি নিশ্চিত যে এটি ঠিক কাজ করে?
wizzwizz4

@ wizzwizz4 ধন্যবাদ, চিত্রটি প্রদর্শন করার সময়, আমার বিপরীত ক্রমে rgb পিক্সেল ছিল।
মাইল

4

জেলি , 8 7 বাইট

Jx‘Xµ€€

ইনপুটটি 3 ডি তালিকা মাত্রা h x ডাব্লু x 3 3 সহ আউটপুট 2d তালিকা যা মাত্রা h x ডাব্লু যেখানে 1 আরজিবি মান (255, 0, 0), 2 হয় (0, 255, 0), এবং 3 হ'ল (0, 0, 255)।

নীচের নমুনা ইনপুটটি মোনা লিসা চিত্রের বাম দিকের 4 x 4 অঞ্চল।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Jx‘Xµ€€  Input: The 3d list of rgb pixels
    µ    Begin a monadic chain (Will operate on each pixel, input: [R, G, B])
J          Enumerate indices to get [1, 2, 3]
  ‘        Increment each to get [R+1, G+1, B+1]
 x         Make R+1 copies of 1, G+1 copies of 2, B+1 copies of 3
   X       Select a random value from that list of copies and return
     €€  Apply that monadic chain for each list inside each list

3

পাইথন 3, 119 বাইট

কোথায় mইনপুট পিক্সেল একটি 2-D অ্যারে যেখানে প্রতিটি পিক্সেল ফর্ম একটি তালিকা রয়েছে হিসাবে নেওয়া হয় [r,g,b]। প্রতিটি পিক্সেলের অবস্থানে, যথাক্রমে 0,1,2উপস্থাপনের জন্য ফিরে আসে (250,0,0), (0,250,0), and (0,0,250)

import random
lambda m:[map(lambda x:x.index(sum((((i+1)*[i])for i in x),[])[random.randint(0,sum(x)+2)]),i)for i in m]

আমি বিশ্বাস করি না যে আপনাকে ভেরিয়েবল হিসাবে ইনপুট নেওয়ার অনুমতি দেওয়া হয় (সাধারণ আইও সমর্থন করে এমন কোনও ভাষাতে একটি সম্পূর্ণ প্রোগ্রাম লেখার সময়)। আমি মনে করি আপনাকে এটি ব্যবহার করতে হবে inputবা এটি একটি ফাংশন তৈরি করতে হবে এবং mপ্যারামিটার হিসাবে নিতে হবে ।
ননলাইনফর্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.