ধরুন আমাদের কাছে একটি 2D ম্যাট্রিক্স M একটি চিত্রের ধূসর স্কেলকে প্রতিনিধিত্ব করে, আমাদেরকে একটি মসৃণ ডিজাইন করতে হবে যাতে প্রতিটি পিক্সেলের ধূসর স্কেলটি সমস্ত 8টি আশেপাশের পিক্সেলের গড় ধূসর স্কেল (রাউন্ডিং ডাউন) হয়ে যায়। যদি একটি কক্ষে 8টিরও কম আশেপাশের কোষ থাকে, তাহলে সম্ভাব্য সমস্ত পিক্সেল রূপান্তর করুন৷
৷সুতরাং, যদি ইনপুট মত হয়
1 | 1 | ৷1 | ৷
1 | 0 | 1 | ৷
1 | 1 | ৷1 | ৷
তাহলে আউটপুট হবে
0 | 0 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
R :=M
এর সারি গণনা -
C :=কলামের সংখ্যা
-
একটি অ্যারে d ={ -1, 0, 1 }
সংজ্ঞায়িত করুন -
আকারের একটি 2D অ্যারে রেস (R x C)
সংজ্ঞায়িত করুন -
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=0, যখন j
করুন -
যোগফল :=0, গণনা :=0
-
আরম্ভ করার জন্য k :=0, যখন k <3, আপডেট করুন (k 1 দ্বারা বৃদ্ধি করুন), −
করুন-
আরম্ভ করার জন্য l :=0, যখন l − 3, আপডেট করুন (l 1 দ্বারা বাড়ান), −
-
m :=i + d[k], n :=j + d[l]
-
যদি m>=0 এবং m
=0 এবং n -
1 দ্বারা গণনা বাড়ান এবং যোগফল =যোগফল + M[m, n]
-
-
-
-
res[i, j] :=যোগফল / গণনা
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#includenamespace ব্যবহার করে std;void print_vector(vector > v){ cout <<"["; for(int i =0; i > ইমেজ স্মুদার(ভেক্টর<ভেক্টর >এন্ড এম) { int R =M.size(); int C =M[0].size(); ভেক্টর d{ -1, 0, 1 }; ভেক্টর<ভেক্টর > res(R, vector (C, 0)); (int i =0; i =0 &&m =0 &&n > v ={{1,1,1},{1,0,1},{1,1,1}}; print_vector(ob.imageSmoother(v));}
ইনপুট
{1,1,1},{1,0,1},{1,1,1}}