ইন্দ্রিয়তন্ত্র/কম্পিউটার মডেল/দৃষ্টিগত তথ্য প্রক্রিয়াজাতকরণের বর্ণনামূলক সিমুলেশন

testwiki থেকে
পরিভ্রমণে চলুন অনুসন্ধানে চলুন

টেমপ্লেট:SensorySystems Navigation

চাক্ষুষ সিস্টেমের কম্পিউটার সিমুলেশন

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

প্রাথমিক চাক্ষুষ সিস্টেমের প্রক্রিয়াকরণের স্কিম্যাটিক ওভারভিউ
গঠন কার্যাবলী ২-ডি ফুরিয়ার প্লেন
বাস্তব জগৎ I(x,y,t,λ)
অপটিক্স লো-পাস স্পেশিয়াল ফিল্টারিং
ফটো-রিসেপ্টর অ্যারে স্যাম্পলিং, আরও লো-পাস ফিল্টারিং, টেম্পোরাল লোহ্যান্ডপাস ফিল্টারিং, λ ফিল্টারিং, গেইন কন্ট্রোল, রেসপন্স কম্প্রেশন
LGN সেল স্পেশিও-টেম্পোরাল ব্যান্ডপাস ফিল্টারিং, λ ফিল্টারিং, একাধিক প্যারালাল রিপ্রেজেন্টেশন
প্রাইমারি ভিজ্যুয়াল কর্টেক্স নিউরন: সিম্পল ও কমপ্লেক্স সিম্পল সেল: ওরিয়েন্টেশন, ফেজ, গতি, বাইনোকুলার ডিসপারিটি, ও λ ফিল্টারিং
কমপ্লেক্স সেল: ফেজ ফিল্টারিং থাকে না (কনট্রাস্ট এনার্জি ডিটেকশন)

বাঁ পাশে চাক্ষুষ সিস্টেমের গুরুত্বপূর্ণ কিছু গঠন দেখানো হয়েছে; মাঝে সংশ্লিষ্ট গঠনের কিছু কার্যাবলী; ডানে ২-ডি ফুরিয়ার রিপ্রেজেন্টেশন দেখানো হয়েছে — বাস্তব জগৎ, রেটিনাল ইমেজ ও গ্যাংলিয়ন ও কর্টিকাল সেলের সেনসিটিভিটির। (তথ্যসূত্র: Handbook of Image and Video Processing, A. Bovik)

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

ইন্দ্রিয় অঙ্গের উপাদানগুলোর সিমুলেশন

চোখের অ্যানাটমিক্যাল প্যারামিটার

গড়পড়তা চোখের অ্যান্টেরিয়র কর্নিয়ার বক্রতার ব্যাসার্ধ rC = ৭.৮ mm এবং অ্যাকুইয়াস রিফ্র্যাকটিভ ইনডেক্স ১.৩৩৬। চোখের দৈর্ঘ্য LE = ২৪.২ mm। আইরিস প্রায় সমতল এবং এর প্রান্ত (লিমবাস) এর ব্যাসার্ধ rL = ৫.৮৬ mm।

চোখের অপটিক্স

চোখের অপটিক্সকে তার ২-ডি স্পেশিয়াল ইমপালস রেসপন্স ফাংশন দ্বারা বর্ণনা করা হয়, যাকে বলা হয় পয়েন্ট স্প্রেড ফাংশন (PSF)

h(r)=0.95⋅exp⁡(−2.6⋅|r|1.36)+0.05⋅exp⁡(−2.4⋅|r|1.74),

এখানে r হলো ইমেজের কেন্দ্র থেকে মিনিট অফ আর্কে রেডিয়াল দূরত্ব।

প্রায়োগিক বাস্তবায়ন

একটি নির্দিষ্ট ডিজিটাল ইমেজের উপর প্রভাব নির্ভর করে তা চোখ থেকে কত দূরে অবস্থান করছে তার ওপর। একটি সাধারণ বিকল্প হিসেবে এই ফিল্টারের পরিবর্তে উচ্চতা ৩০ ও স্ট্যান্ডার্ড ডিভিয়েশন ১.৫ বিশিষ্ট একটি গাউসিয়ান ফিল্টার ব্যবহার করা যায়।

এক মাত্রায় গাউসিয়ান ফাংশন নিম্নরূপ:

g(x)=a⋅exp⁡(−x22σ2).

গ্যাংলিয়ন সেলের কার্যকলাপ

Mexican Hat ফাংশন, যেখানে sigma1:sigma2 = 1:1.6

যেসব প্রভাব উপেক্ষা করা হয়েছে:

  • টেম্পোরাল রেসপন্স
  • তরঙ্গদৈর্ঘ্যের প্রভাব (বিশেষ করে কোণস এর জন্য)
  • আইরিসের খোলা
  • ফটো-রিসেপ্টরের স্যাম্পলিং ও বণ্টন
  • ফটো-পিগমেন্ট ব্লিচিং

এসব উপেক্ষা করে গ্যাংলিয়ন সেলের প্রতিক্রিয়াকে ডিফারেন্স অফ গাউসিয়ান (DOG, Wikipedia [১]) ফাংশনের মাধ্যমে আনুমানিক করা যায়:

f(x;σ)=1σ12πexp⁡(−x22σ12)−1σ22πexp⁡(−x22σ22).

এই ফাংশনের পাইথন সোর্স কোড পাওয়া যায় নিচের রেফারেন্সে: [১]।

σ1 ও σ2 এর অনুপাত আনুমানিক ১:১.৬, তবে এটি eccentricity অনুযায়ী পরিবর্তিত হয়। মিজেট সেল (বা P-cell) এর জন্য Receptive Field Size (RFS):

RFSP≈2⋅Eccentricity,

এবং M-cell এর জন্য:

RFSM≈6⋅Eccentricity,

এখানে RFS এককে arcmin এবং Eccentricity হলো ফোভিয়ার কেন্দ্র থেকে mm দূরত্বে পরিমাপ।

প্রাইমারি ভিজ্যুয়াল কর্টেক্স (V1) এর সিম্পল সেলের কার্যকলাপ

আবারও টাইম-ডিপেনডেন্স বাদ দিয়ে, V1 এর সিম্পল সেলের কার্যকলাপ Gabor ফিল্টার ব্যবহার করে মডেল করা যায় (Wikipedia [২])। Gabor ফিল্টার একটি লিনিয়ার ফিল্টার, যার ইমপালস রেসপন্স একটি গাউসিয়ান ফাংশন দ্বারা গুণিত একটি সাইনুসয়েডাল ফাংশনের মাধ্যমে সংজ্ঞায়িত:

g(x,y;λ,θ,ψ,σ,γ)=exp⁡(−x'2+γ2y'22σ2)cos⁡(2πx′λ+ψ),

যেখানে

x′=xcos⁡θ+ysin⁡θ,

এবং

y′=−xsin⁡θ+ycos⁡θ.

এই সমীকরণে, λ হলো কোসাইন ফ্যাক্টরের তরঙ্গদৈর্ঘ্য, θ হলো গ্যাবর ফাংশনের স্ট্রাইপের নরমালের ওরিয়েন্টেশন, ψ হলো ফেজ অফসেট, σ হলো গাউসিয়ান এনভেলপের স্ট্যান্ডার্ড ডিভিয়েশন, এবং γ হলো স্পেশিয়াল অ্যাসপেক্ট রেশিও, যা গ্যাবর ফাংশনের এলিপটিসিটি নির্দেশ করে।

সিম্পল সেলের রিসেপ্টিভ ফিল্ডের আকার নির্ভর করে এটি ফোভিয়ার কতটা কাছে বা দূরে তার উপর, তবে রেটিনাল গ্যাংলিয়ন সেলের তুলনায় কম নির্ভরশীল। ফোভিয়ার কাছাকাছি সবচেয়ে ছোট রিসেপ্টিভ ফিল্ড প্রায় এক-চতুর্থাংশ ডিগ্রি বাই এক-চতুর্থাংশ ডিগ্রি, যার কেন্দ্র অঞ্চল কয়েক মিনিট অফ আর্ক (যেটা গ্যাংলিয়ন সেলের ছোট রিসেপ্টিভ ফিল্ড সেন্টারের সমান)। রেটিনাল পেরিফেরিতে এই রিসেপ্টিভ ফিল্ড প্রায় ১ ডিগ্রি বাই ১ ডিগ্রি হতে পারে। [২]. গ্যাবর-এর মতো ফাংশনগুলো স্বাভাবিকভাবেই তৈরি হয়, প্রতিদিনের দৃশ্যপটের পরিসংখ্যান থেকেই [৩]। একটি সাধারণ চিত্রের পরিসংখ্যান কীভাবে গ্যাবর-এর মতো রিসেপটিভ ফিল্ড তৈরি করতে পারে তার একটি উদাহরণ পাইথনে দেওয়া হয়েছে [৪]; এবং গ্যাবর ফাংশনের মাধ্যমে একটি চিত্র ফিল্টার করলে কী প্রভাব পড়ে তার (পাইথন ভিত্তিক) একটি ডেমো দেখা যাবে [৫]।

গ্যাবর ফাংশন, যেখানে sigma = 1, theta = 1, lambda = 4, psi = 2, gamma = 1

এটি MATLAB-এ একটি উদাহরণ বাস্তবায়ন:

function gb = gabor_fn(sigma,theta,lambda,psi,gamma)
 
  sigma_x = sigma;
  sigma_y = sigma/gamma;
 
  % সীমারেখা নির্ধারণ
  nstds = 3;
  xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
  xmax = ceil(max(1,xmax));
  ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
  ymax = ceil(max(1,ymax));
  xmin = -xmax;
  ymin = -ymax;
  [x,y] = meshgrid(xmin:0.05:xmax,ymin:0.05:ymax);
 
  % ঘূর্ণন
  x_theta = x*cos(theta) + y*sin(theta);
  y_theta = -x*sin(theta) + y*cos(theta);
 
  gb = exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).* cos(2*pi/lambda*x_theta+psi);
 
end

এবং এর সমতুল্য পাইথন বাস্তবায়ন হবে:

import numpy as np
import matplotlib.pyplot as mp

def gabor_fn(sigma = 1, theta = 1, g_lambda = 4, psi = 2, gamma = 1):
    # নির্দিষ্ট প্যারামিটারের ভিত্তিতে গ্যাবর ফাংশন গণনা করা হয়
        
    sigma_x = sigma
    sigma_y = sigma/gamma
    
    # সীমারেখা:
    nstds = 3
    xmax = max( abs(nstds*sigma_x * np.cos(theta)), abs(nstds*sigma_y * np.sin(theta)) )
    ymax = max( abs(nstds*sigma_x * np.sin(theta)), abs(nstds*sigma_y * np.cos(theta)) )
    
    xmax = np.ceil(max(1,xmax))
    ymax = np.ceil(max(1,ymax))
    
    xmin = -xmax
    ymin = -ymax
    
    numPts = 201    
    (x,y) = np.meshgrid(np.linspace(xmin, xmax, numPts), np.linspace(ymin, ymax, numPts) ) 
    
    # ঘূর্ণন
    x_theta =  x * np.cos(theta) + y * np.sin(theta)
    y_theta = -x * np.sin(theta) + y * np.cos(theta)
    gb = np.exp( -0.5* (x_theta**2/sigma_x**2 + y_theta**2/sigma_y**2) ) * \
         np.cos( 2*np.pi/g_lambda*x_theta + psi )
    
    return gb

if __name__ == '__main__':
    # প্রধান ফাংশন: গ্যাবর ফাংশন গণনা ও প্রদর্শন
    gaborValues = gabor_fn()
    mp.imshow(gaborValues)
    mp.colorbar()
    mp.show()

ইমেজ প্রসেসিং

কম্পিউটার কীভাবে ছবি প্রসেস করে, তা বোঝার জন্য এটি একটি গুরুত্বপূর্ণ টেকনিক্যাল বিষয়। আমাদের জানতে হবে কীভাবে ছবি সম্পাদনা করা যায় এবং কীভাবে বিভিন্ন কৌশল ব্যবহার করে ছবি পুনর্বিন্যাস করা যায়।

চিত্র উপস্থাপন

গ্রেস্কেল
গ্রেস্কেল চিত্রের উপস্থাপন।

একটি কম্পিউটারের কাছে একটি চিত্র মানে অসংখ্য ছোট ছোট বর্গক্ষেত্র। এই বর্গক্ষেত্রগুলিকে বলা হয় "পিক্সেল"। একটি গ্রেস্কেল চিত্রে, প্রতিটি পিক্সেলে একটি সংখ্যা n থাকে, যা সাধারণত 0≤n≤255 এর মধ্যে। এই সংখ্যা n নির্ধারণ করে ঐ পিক্সেলের রং কতটা ধূসর। অর্থাৎ, একটি গ্রেস্কেল চিত্রে আমরা ২৫৬টি আলাদা ধূসর রঙ ব্যবহার করতে পারি, যেখানে ২৫৫ মানে সাদা এবং ০ মানে কালো। প্রকৃতপক্ষে, আমরা চাইলে ২৫৬-এর বেশি রঙও ব্যবহার করতে পারি। তবে সেই ক্ষেত্রে প্রতিটি পিক্সেলের জন্য ১ বাইটের (৮ বিট) বেশি মেমোরি প্রয়োজন। তবে বড় ছবি হলে এটি কঠিন হয়ে পড়ে। এছাড়া অনেক সময় মনিটর বা সেন্সর ২৫৬-এর বেশি ধূসর রঙ দেখাতেই পারে না।

রঙ
চিত্র:ImageRepresentation Color.png
আরজিবি নোটেশন দিয়ে রঙিন ছবি উপস্থাপন

রঙিন চিত্র উপস্থাপন গ্রেস্কেল চিত্রের চেয়ে সামান্য জটিল। কম্পিউটার রঙ নির্ধারণে তিনটি প্রধান রঙ লাল, সবুজ এবং নীল (RGB) ব্যবহার করে।

এই ছবিগুলিও পিক্সেলের মাধ্যমে সংরক্ষিত হয়। তবে এখানে প্রতিটি পিক্সেলকে তিনটি মান রাখতে হয়, প্রতিটি রঙের জন্য একটি করে। ফলে, আমরা ২৫৬3= ১৬,৭৭৭,২১৬টি আলাদা রঙ উপস্থাপন করতে পারি। গ্রেস্কেলের মতোই এখানে (০,০,০) মানে কালো এবং (২৫৫,২৫৫,২৫৫) মানে সাদা।

অরিয়েন্টেশন

সতর্কবার্তা - দ্বিমাত্রিক পয়েন্ট নির্ধারণে দুটি সাধারণ কিন্তু ভিন্ন পদ্ধতি আছে: ১) x/y নোটেশন, যেখানে x সাধারণত বামে নির্দেশ করে ২) row/column অভিমুখ আপনার তথ্য ব্যাখ্যা করতে কোন পদ্ধতি ব্যবহার করছেন, তা বুঝে সাবধান থাকুন। কারণ এই দুই পদ্ধতি পরস্পরের সাথে সামঞ্জস্যপূর্ণ নয়।

ইমেজ ফিল্টারিং

১ডি ফিল্টার

বহু প্রযুক্তিগত অ্যাপ্লিকেশনে আমরা কিছু মৌলিক বেসিস ব্যবহার করি যেগুলোর মাধ্যমে বৈশিষ্ট্য প্রকাশ সহজ হয়। একমাত্রিক ক্ষেত্রে ফিল্টার সহজ, তাই আমরা তা ছবি পরিবর্তনে ব্যবহার করতে পারি। "সাভিটস্কি-গোলাই ফিল্টার" একটি গুরুত্বপূর্ণ ফিল্টার যা ইনপুট সিগন্যাল স্মুথ করে। এটি আব্রাহাম সাভিটস্কি ও মার্সেল জে. ই. গোলাই ১৯৬৪ সালে প্রস্তাব করেন। এটি একটি impulse-response (IR) ফিল্টার।

উদাহরণস্বরূপ, একমাত্রিক ভেক্টরের কথা ভাবুন। একটি ভেক্টর x, যেখানে: 𝐱=(x1,x2,…,xn)withn∈ℕ আমাদের লক্ষ্য এই ভেক্টরটি স্মুথ করা। এজন্য আরেকটি ভেক্টর (w)=(w1,w2,…,wm)withn>m∈ℕ দরকার, যেটিকে বলা হয় weight ভেক্টর।

y(k)=∑i=1mw(i)x(k−m+i) সূত্রে আমরা একটি স্মুথড ভেক্টর পাই। নতুন ভেক্টরটি আগের চেয়ে মসৃণ কারণ এটি আশেপাশের কিছু মানের গড় ব্যবহার করে। তবে, নতুন ভেক্টরের দৈর্ঘ্য আগের চেয়ে কম হয় (n-m)।

২ডি ফিল্টার

১ডি থেকে ২ডি-তে রূপান্তর সহজ, ভেক্টরের পরিবর্তে ম্যাট্রিক্স ব্যবহার করতে হয়। যেমন, গ্রে-লেভেল ইমেজ একটি ম্যাট্রিক্স, যেখানে প্রতিটি উপাদান ০ থেকে ২৫৫ এর মধ্যে সংখ্যা।

এখানে ওজন ভেক্টরের পরিবর্তে ওজন ম্যাট্রিক্স ব্যবহার হয়। ফিল্টার প্রয়োগ করার সময় প্রতিটি উপাদান গুণ করে যোগ করা হয়: y(n,m)=∑i=1k∑j=1lwij×x(n−1+i,m−1+j)

ডাইলেেশন এবং ইরোশন

পূর্বের লিনিয়ার ফিল্টারগুলো কমিউটেটিভ অর্থাৎ বিন্যাস পরিবর্তন করলেও ফল একই থাকে। যেমন, সাভিটস্কি-গোলাই ফিল্টার দুটি ভিন্ন ক্রমে ব্যবহার করলেও ফলাফল এক। আসলে একটি মাত্র ফিল্টারেই এই দুই ফিল্টারের সমান কাজ করা যায়।

তবে মরফোলজিক্যাল অপারেশন অ-লিনিয়ার এবং ফলাফলের উপর বিন্যাসের প্রভাব পড়ে। একটি কালো-সাদা ছবি ধরা যাক, যেখানে প্রতিটি পিক্সেল মান xij:

xij=0or1,∀i,j

এখানে একটি স্ট্রাকচারাল এলিমেন্ট SE নির্ধারণ করতে হয়, যেমন ৩x৩ ম্যাট্রিক্স।

ইরোশন E এর সংজ্ঞা:

E(M)={0, if∑i,j=03(se)ij<91, else  ,with (se)ij,M∈SE

অর্থাৎ, SE-তে যদি কোনও পিক্সেলের মান ০ হয়, তাহলে সেই অংশের মান ০ করে দেয়।

ডাইলেেশন D এর ক্ষেত্রে, যদি SE-তে যেকোনো একটি মান ১ হয়, তাহলে D(M) = 1:

D(M)={1,if∑i,j=03(se)ij>=10,else,with(se)ij,M∈SE।

এই ছবিতে মরফোলজিক্যাল অপারেশন... ...এবং এর ফলাফল:

ডাইলেেশন ও ইরোশনের সংমিশ্রণ: ওপেনিং এবং ক্লোজিং

ডাইলেেশন ও ইরোশন দুটি সংমিশ্রণ আছে। একটি ওপেনিং এবং অন্যটি ক্লোজিং।

নিয়ম:

opening=dilation∘erosionclosing=erosion∘dilation

তথ্যসূত্র

টেমপ্লেট:Reflist

টেমপ্লেট:Chapter navigation টেমপ্লেট:BookCat