සිංහලෙන් Digital Image Processing

 

Digital Images යනු මොනවාද ?

විකිපීඩියා විශ්වකෝෂයට අනුව,

"ඩිජිටල් රූපයක් (Digital Image) යනු පින්තූර මූලද්‍රව්‍යයන්ගෙන් සමන්විත රූපයක් වන අතර එය පික්සල් (pixel) ලෙසද හැඳින්වේ. සෑම pixel එකක්ම එහි තීව්‍රතාව සඳහා සංඛ්‍යාත්මක නිරූපණයක් ඇති අතර, පික්සල් තීව්‍රතාව පින්තුරයේ පේළි ගන්නේ (y) සහ තිර ගන්නේ  (x) ද්විමාන ශ්‍රිතයකි (2D function - f(x, y)) ."
සරළව කිවහොත්, ඩිජිටල් රූපයක් යනු, පික්සල නමින් හැදින්වෙන කුඩා කොටස් විශාල ප්‍රමාණයකින් සැදුම් ලත් රූපයකි. පික්සලයක අගය මගින් පින්තුරයේ යම් ස්ථානයක වර්ණ තිවරතාව නිරුපනය කරයි. සරලවම ඩිජිටල් රූපයක් යනු ජිග්සෝ ප්‍රහේලිකාවක් වැනි දෙයකි.

රූපය 2: විශාලිත ඩිජිටල් රූපයක්
රූපය 1: ජිග්සෝ ප්‍රහේලිකාවක්





ඉහත 2 රූපයෙ කොටු ලෙස දිස් වන්නේ පික්සල් ය.

ඩිජිටල් රූප නිර්මාණය කරනු  හෝ  ග්‍රහණය කරගනු ලබන්නේ ඩිජිටල් පරිගණක භාවිතයෙන් හෝ ඩිජිටල් රූප සංවේදක (ඩිජිටල් කැමරා) භාවිතා කිරීමෙනි. .Jpg, .gif, .png, .tif, .bmp, .psd වැනි file extensions මගින් ඇති රූප ඩිජිටල් රූප වේ. 

Digital Image Processing (DIP) යනු කුමක්ද ?

Digital image processing යනු  ඩිජිටල් පරිගණකයක් හරහා ඩිජිටල් රූප (digital images) හැසිරවීම සමඟ කටයුතු කරයි. එය signals and systems ක්ෂේත්‍රයේ උප ක්ෂේත්‍රයක් වන නමුත් විශේෂයෙන් රූප (images) කෙරෙහි අවධානය යොමු කරයි. රූපයක් සැකසීම සිදු කළ හැකි පරිගණක පද්ධතියක් සංවර්ධනය කිරීම කෙරෙහි Digital image processing හිදී අවධානය යොමු කරයි. එම පද්ධතියේ ආදානය ඩිජිටල් රූපයක් වන අතර කාර්යක්ෂම ඇල්ගොරිතම භාවිතා කරමින් රූපය සැකසෙන පද්ධති ක්‍රියාවලියක් වන අතර රූපයක් ප්‍රතිදානයක් ලෙස ලබා දෙයි.

වඩාත් පොදු උදාහරණය වන්නේ ඇඩෝබි ෆොටෝෂොප් (Adobe Photoshop) ය. එය ඩිජිටල් රූප සැකසීම සඳහා බහුලව භාවිතා වනසොෆ්ට්වෙයාර් එකකි. ඇඩෝබි ෆොටෝෂොප් තුළ ඇතිවිවිධ කාර්යයන් (functions) ක්‍රියා කරන ආකාරය සහ Digital image processing ක්ෂේත්‍රයේ තවත් බොහෝ දේ ඔබට ඉගෙන ගත හැකිය.

රූපය 3: Digital image processing ක්‍රියාවලි සටහන 
source: https://www.tutorialspoint.com/dip/index.htm

පින්තුරයක ඛණ්ඩාංක පද්ධතිය - Image Coordinate System

ඩිජිටල් රූපයක එක් එක් පික්සෙල්අංකනය කිරීම සඳහා, ඛණ්ඩාංක පද්ධතියක් අර්ථ දැක්වේ. රූපයක ඛණ්ඩාංක පද්ධතියේමූලය (0, 0) ලක්ෂ්‍යය රූපයේ වම් ඉහළ කෙළවරේ අර්ථ දක්වා ඇත. 'x' ධන  දිශාව පින්තුරයේ  පළල ඔස්සේද  'y' ධන දිශාව උස ඔස්සේද වේ.


රූපය 4: ඛණ්ඩාංක පද්ධතිය

පින්තූරයක විශාලත්වය මැනීම (Bits per Pixel - bpp)

Bppහෝ bits per pixel යන්නෙන් දැක්වෙන්නේ එක පික්සෙල් එකකට ඇති බිටු (bits) ගණනයි. bits එකක් නැතිනම් බිටුවක් යනු පරිගනකයේ දත්ත ප්‍රමාණය මනින ඒකකයයි. රූපයක ඇති විවිධ වර්ණ ගණන රඳා පවතින්නේ පික්සෙල් එකකට ඇති බිටු ගණන (bits) මතය. බොහෝ රූප සැකසුම්පරිගණක වැඩසටහන් වල (image processing libraries) පෙරනිමියෙන් (by default), රූපයක් bpp 8 ආකෘතියෙන් (uint8 ආකෘතිය) යොදා ගැනී. එයින් අදහස් කරන්නේ පික්සල් අගය 0 සිට 255  දක්වා  (එනම්: 2 ^ 0 සිට 2 ^ 8 -1 දක්වා) විය හැකි බවයි. ඔබේ අවශ්‍යතාවය අනුව පහත දක්වා ඇති වෙනත් දත්ත ආකෘතියකට (data type එකකට) මෙය වෙනස් කළ හැකිය.
  • binary - 1bpp
  • int8 - 8 bpp
  • int16 - 16 bpp
  • int32/ Long int - 32 bpp
  • Float - 32 bpp
  • Double - 64 bpp
රූපයක විශාල ප්‍රමාණය කරුණු තුනක් මත රඳා පවතී.
  • රුපයේ පේළි (rows) ගණන (පික්සෙල් වලින්)
  • රුපයේ තීරු  (columns) ගණන (පික්සෙල් වලින්)
  • පික්සෙල් එකකට බිටු ගණන (bpp අගය)
රූපයක විශාලත්වය ගණනය කිරීමේ සූත්‍රය පහත දැක්වේ.

රූපයේ විශාලත්වය = පේළි (rows) ගණන x තීරු (columns) ගණන x bpp අහය

උදාහරණයක් ලෙස, පේළි 1024 ක් සහ එහි තීරු 1024 ක් සහිත අළු පැහැති රූපයක් (gray-scale) රුපයක් සළකන්න. එය අළු පරිමාණ රූපයක්  (gray-scale) බැවින් එයට විවිධ අළු වර්ණ  (gray values) 256 ක් (0 - 255) නැත්නම් පික්සෙල් එකකට බිටු 8 (8 bpp) ක් ඇත. මෙම අගයන් සූත්‍රයට ඇතුළත් කිරීමෙන් අපට රූපයේ විශාලත්වය (image sizeලැබේ.
  • බිටු/ බිට් 8 = බයිට් 1 
  • බයිට් 1024 =  කිලෝ බයිට් 1 (1kb)
  • කිලෝ බයිට් 1024 = මෙගා බයිට් 1 (1Mb)
  • මෙගා බයිට් 1024 = ගිගා බයිට් 1 (1Gb)

රූපයේ විශාලත්වය  = 1024 x 1024 x 8 bits
               = 8388608 bits
             = 8388608 / 8 = 1048576 bytes
               = 1048576 / 1024 = 1024kb
               = 1024 / 1024 = 1 Mb

Color Spaces යනු කුමක්ද ?

Color spaces යනු  වර්ණ හා සම්බන්ධ අධ්‍යයන වලදී වර්ණ විභේදනය කරන විවිධ ආකාර/ මොඩලයන් වේ. වඩාත් ප්‍රචලිත color spaces කිහිපයක් පහත දක්වා ඇත.

කලුසුදු රුප (Binary/ Black and White Images)

මෙය color space එකක් ලෙස නොසලකන නමුත් මේ ගැන දැන ගැනීම හොඳය.

කලුසුදු රූපයක් යනු සාමාන්‍යයෙන් කළු සහ සුදු යන වර්ණ දෙකෙන් එකක් තිබිය හැකි පික්සල් වලින් සමන්විත එකකි. මෙයින් අදහස් කරන්නේ සෑම පික්සෙල් එකක්ම තනි බිට් එකක් ලෙස ගබඩා කර ඇති බවයි (එනම්, 0 හෝ 1 ලෙස). මෙය gray-scale රූප සමඟ වරදවා වටහා නොගත යුතුය. Photoshop මෘදුකාංගයේ "Bitmap" රූප යනු මෙම කලුසුදු රූප වේ.


රූපය 5: කලුසුදු රූපයක්

ග්‍රේ ස්කෙල් (Gray-scale)

Gray-scale පින්තූරයක ඇත්තේ තීව්‍රතා තොරතුරුපමණි. කිසිම වර්ණ තොරතුරක් එහි අන්තර්ගත නොවේ. එනම් පික්සෙල් එකේ අගයෙන් එම ස්ථානය කෙතරම් දීප්තිමත්ද යන්න දැක්වේ. පික්සලයේ අගය වැඩි වන තරමට තීව්‍රතාවය වැඩිවේ. Gray-scale රූපයක් සඳහා, ඔබට අවශ්‍ය වන්නේ එක් එක් පික්සෙලයක් සඳහා එක් බයිට් එකක් (සාමාන්‍යයෙන් uint8 / 8 bpp භාවිතා වේ). එක් බයිට් එකකට (හෝ බිටු 8 කට) 0 සිට 255 දක්වා අගයක් ගබඩා කළ හැකි අතර එමඟින් ඔබට කළු පැහැයේ සිට සුදු පැහැය දක්වා සියලුම අළු පැහැයෙන් ආවරණයකර ගත හැත.

අපට රුපයක් හදුනා ගැනීමට අත්‍යවශ්‍ය වන්නේ විවිධ වර්ණ පැවතීම නොව විවිධ තිව්‍රතා පැවතීම බව මෙම gray-scale මගින් පෙනී යයි.


රූපය 6: Gray-scale වර්ණ පරාසය


රූපය 7: Gray-scale රූපයක්

ආර් ජී බී (RGB)

RGB යනු වැඩිපුරම භාවිතා වන color space එකයි . RGB වර්ණ ආකෘතියේ ප්‍රධාන අරමුණ වන්නේ රූපවාහිනී සහ පරිගණක වැනි ඉලෙක්ට්‍රොනිකඋපාංගවල  රූප සංවේදනය, රූප නිරූපණය සහ රූප ප්‍රදර්ශනය කිරීමයි. RGB වර්ණ ආකෘතියේ ප්‍රධාන අදහස වන්නේ, සෑම වර්ණ රූපයක්ම සැබවින්ම වෙනස් වර්ණ ස්තර තුනකින් සෑදී ඇති බවයි.  එනම් රතු (R) ස්තරය, කොළ (G) ස්තරය සහ නිල් (B) ස්තරය යි. සාමාන්‍ය Gray-scale රූපයක ඇත්තේ එක් ස්තරයක් පමණි. නමුත් වර්ණ රූපයක් සැබවින්ම වෙනස්  වර්ණ සංරචක/ ස්තර/ න්‍යාස තුනකින් සමන්විත වේ.

RGB ආකෘතිය additive color space  එකක් ලෙස හදුන්වයි. මන්ද යත් එය ඕනෑම වර්ණයක්සාදා ගැනීමට කරන්නේ රතු, කොළ සහ නිල් යන වර්ණ තුන විවිධ ප්‍රමාණවලින් මිශ්‍ර කිරීමයි. හරියට ආලෝකය මෙනි. ආලෝකය ද සියලුම වර්ණ එකතු වූ විට සුදු පාටලැබේ. මෙහිද එසේමයි. රතු, කොළ හා නිල් වර්ණ උපරිම ප්‍රමාණවලින් එක වූ විට සුදු පාටද රතු, කොළ හා නිල් වර්ණ අවම ප්‍රමාණවලින් එක වූ විට කලු පාටද ලැබේ. ඒවා අතරමැදි අනුපතවලින් මිශ්‍ර වූ විට අනෙකුත් වර්ණ ලැබේ.


වර්ණ රූපය  = රතු  ස්තරය +නිල්  ස්තරය +කොළ  ස්තරය

රූපය 8: RGB Additive Color Mixing
source: https://en.wikipedia.org/wiki/Color_space


රූපය 9: රුපයක RGB වර්ණ සංරචක 


CMYසහ CMYK

මුද්‍රණ ක්‍රියාවලියේදී භාවිතා කරන වර්ණ ආකෘති මේවාය.

CMY සහ CMYK වර්ණ ආකෘති subtractive color space ලෙස හදුන්වයි. (RGB යනු additive color space  එකකි). එනම් මෙහිදී සිදු කරන්නේ සුදු පාට (හෝ වෙනත් ඕනෑම පාටක) උපස්ථරයක් විවිධ වර්ණ එක් කිරීම මගින් වර්ණ විපර්යාසයකට ලක් කිරීමයි. එනම් මෙහිදී ආරම්භයේදීම/ කිසිවක් මිශ්‍ර නොකළ විට සුදු වර්ණය ඇත. සියලු වර්ණ උපරිම ප්‍රමාණවලින් එක් කල විට කළු පාට ලැබේ.

CMY යන නම පැමිණෙන්නේ මෙහිදී භාවිතාවන ප්‍රධාන වර්ණ තුනේ මුලකුරු වලිනි: එනම් සයන් (cyan), මැජෙන්ටා (magenta) සහ කහ (yellow) පාටයි.

වර්ණ මුද්‍රණයේදී (color printing) CMYK භාවිතා කරයි. CMYK යනු වර්ණ මුද්‍රණයක භාවිත කරන තීන්ත තහඩු හතරයි: එනම් සයන්, මැජෙන්ටා, කහ සහ කළු තීන්ත තහඩුයි.මුද්‍රණ ක්‍රියාවලියේදී සුදු උපස්ථරයකින් (කැන්වස් එකක්,කඩදාසියක් ආදිය) ආරම්භ වන අතර රූපයක් නිර්මාණය කිරීම සඳහා සුදු පැහැයෙන් වර්ණ අඩු කිරීමට මෙම තීන්ත භාවිතා කරයි. මුද්‍රණ යන්ත්‍රයට ලැබෙන විධාන අනුව සයන්, මැජෙන්ටා, කහ සහ කළු සඳහා තීන්ත අදාළ අනුපාතවලින් මිශ්‍ර කරනු ලැබේ.

රූපය 10: CMY Subtractive Color Mixing
source: https://en.wikipedia.org/wiki/Color_space

වයි යු වී (Y'UV)

මෙම වර්ණ ආකෘතියෙහි එක් තීව්‍රතා/ දීප්ති ස්ථරයක්/ සංරචකයක්  (Y ’) සහ වර්ණ ස්ථර/ සංරචක 2 ක් (U සහ V) ඇත. Y’UV වර්ණ ආකෘතිය පැරණි ඇනලොග් වීඩියෝ සඳහා භාවිත කෙරන ලදී (නව ඩිජිටල් වීඩියෝ පැමිණීමට පෙර).


රූපය 11: රුපයක Y'UV වර්ණ සංරචක 
source: https://www.tutorialspoint.com/dip/introduction_to_color_spaces.htm

වයි සීබි සීආර් (Y'CbCr)

මෙම වර්ණ ආකෘතියෙහි ද එක් තීව්‍රතා/ දීප්ති ස්ථරයක්/ සංරචකයක්  (Y ’) සහ වර්ණ ස්ථර/ සංරචක 2 ක් (Cb - නිල් ගතිය සහ Cr - රතු ගතිය) ඇත. එහි ප්‍රධාන යෙදුමක් වන්නේ JPEG සහ MPEG පින්තුර-වීඩියෝ සම්පීඩනය (compression) සදහා භාවිත කිරීමයි. එනම්  ඩිජිටල් වර්ණ ආකෘතියකි.

මේ දෙක අතර ඇති ප්‍රධාන වෙනස වන්නේ Y'UV ඇනලොග් වන අතර Y'CbCr ඩිජිටල් වේ.

රූපය 12: රුපයක Y'CbCr වර්ණ සංරචක 
source: https://www.tutorialspoint.com/dip/introduction_to_color_spaces.htm


DIP හි මූලික සංකල්ප 

Image Kernels

Image kernel එකක් යනු ෆොටෝෂොප් හි වර්ණරූප බොඳකිරීම (blurring), රූප මුවහත්/ තියුණු කිරීම (sharpening), ලුහු සටහන් (outlining) කිරීම හෝ එම්බොස් (embossing) කිරීම වැනිවෙනස් කිරීම් යෙදීමට භාවිතා කරන කුඩා නයාසයකි. රූපයක අපට අවශ්‍ය වැදගත්ම කොටස් ( දාර, කොන්, රේඛා, වර්ණ වෙනස්වීම්, මුහුණු, ආදීය) උකහා ගැනීමට භාවිත කරන මුඋලික ඒකකය Image kernel වේ. මෙම Image kernels ඩිජිටල්  සමග convolution නම් ගණිත කර්මයට භාජනය කිරිමෙන් මෙම කටයුත්ත ඉටු  ලබයි. Image kernel එකක් විශ්ලේෂණය කිරීමෙන් ඔබට එයින් සිදුකරන කාර්යය පුරෝකථනය කළ හැකිය (convolution ගණිත කර්මය ඉගෙන ගත් පසුව ඔබට මේ පිළිබද  අදහසක් ගත හැකි  වනු ඇත.)

සරළ Image kernel කිහිපයක ක්‍රියාකාරිත්වය පහත දක්වා ඇත.

රූපය 13: රූපය වමට shift කිරීම


රූපය 14: රූපය බොද කිරීම

රූපය 15: රූපය තියුණු කිරීම

Image Filters

එක මත එක තැබූ Image kernel සමූහයක්  Image Filter එකක් (එනම් මෙය ත්‍රිමාණ ව්‍යුහයකි) ලෙස හැඳින්වේ. මෙය තනි කර්නලයක් (kernel) වුවද විය හැකිය. කර්නල් සහ ෆිල්ටර් යන වචන එකිනෙකට සමාන වචන ලෙස භාවිතා කරන නමුත් ඒවාහි අර්ථය තරමක් වෙනස් බව වටහා ගන්න. Convolutional Neural Networks (CNN) අධ්‍යයනය කිරීමේදී මෙම වෙනස ඉතා හොඳින් වටහා ගත හැකිය. නමුත් මෙම ලිපිය තුල ඔබට කර්නලය සහ ෆිල්ටරය යන දෙකම සමාන පද  ලෙස භාවිතා කළ හැකිය, මන්ද අපිමෙම ලිපියෙන් කතා කරන්නේ එක් කර්නලයක් සහිත ෆිල්ටර් ගැන ය.

රූපය 16: Image Filter එකක් 

Convolution ගණිත කර්මය

Convolution යනු ඩිජිටල් රූපයකට කර්නලයක් / ෆිල්ටර භාවිතා කිරීමේ ක්‍රියාවලිය පැහැදිලි කිරීම සඳහා භාවිතා කරන ගණිත කර්මයයි. රූපය f ලෙස ද කර්නලය w ලෙස ද සංකේත කළ හොත්, f සහ w අතර Convolution ගණිත කර්මය w * f ලෙස දැක්විය හැකිය. තරු ලකුණ (එනම් *) මගින් මම ගණිත කර්මය සංකේතවත් ලබයි.

ඩිජිටල්ද්වි රුපයක් යනු ද්වීමාන ශ්‍රිතයක් බැවින් (එනම් x , y යන විචල්‍ය 2ක ශ්‍රිතයක් බැවින්) Convolution ගණිත කර්මහි ද්විමාණ  අර්ථ දැක්වීම  (2D  Convolution)  මෙහිදී භාවිත වේ. එනම්,

අපි උදාහරණයකින් මෙය වටහා ගනිමු. පහත කර්නලය සලකන්න. 

0

-1

0

-1

5

-1

0

-1

0


මෙය රුපයක් සමග Convolution කර්මයට බදුන් කරන්නී යයි ගනිමු . 

Convolution කර්මය මගින් වන්නේ සැමවිටම මද පික්සෙල් එකක වටිනාකම තීරණය කිරීමයි. ඊ සදහා මද පික්සල් එක අවට ඇති සියලු පික්සල් වල අගයන් සලකා බලනු ලැබේ. සියලු යාබද පික්සල් අගයන්හි බරිත එකතුවක් (weighted sum) හෝ බරිත මධ්‍යන්යක් (weighted mean) මධ්‍ය පික්සලයට ලබා දේ. කර්නලය 3 x 3 වන බැවින් අපි රූපය ද  3 x 3 කොටස් වලට බෙදා එම 3 x 3 කොටස් සඳහා Convolution කර්මයයොදන්නෙමු. පළමු 3 x 3 රූපකොටසට Convolution කර්මය යොදන අයුරු  17 රූප සටහනෙහි පෙන්වා ඇත. මෙහිදී සිදු කරනුයේ,
  • අපගේ කර්නලය  සහ රූපකොටස එක මත තබන්න,
  • කර්නලයේ සහ රුප කොටසේ අතිච්ඡාදනය (overlap) වන නැත්නම් එකම පිහිටන පික්සෙල් අගයන් එකිනෙක ගුණ කරන්න,
  • ඒවා එකට එකතු කරන්න. (105 x 0 + 102 x -1 + 100 x 0 + 103 x -1 + 99 x 5 + 103 x -1 + 101 x 0 + 98 x -1 + 104 x 0 = 89)
  • 3 x 3 රුප  කොටසේ  මැද පික්සෙල් එකෙහි අගය මෙම අගය බවට මාරු කරන්න.
  • කර්නලය එක් පික්සෙල් එක බැගින්  දකුණට විස්තාපනය කරමින් මෙම ක්‍රියාවලිය දකුණු කෙළවර දක්වා සිදු කරන්න.
  • ඉන්පසු කර්නලය එක් පික්සෙලය බැගින් පහළට හා දකුණට ගෙන යමින් සම්පූර්ණ රූපය ආවරණය වන  තෙක් ක්‍රියාවලිය දිගටම කරගෙන යන්න.

අවසානයේ ඔබට ලැබෙන්නේ කර්නලය මගින් උකහා ගත් තොරතුරු අඩංගු වන රූපයකි.

ඔබට කිරිමට ඇත්තේ කර්නලය පික්සලය බැගින් විස්තාපනය කරමින්, කර්නලයේ සහ රුප කොටස් වල අනුරූප අගයන් ගුණ කර එකතුව ගෙන, එය රූප කොටසේ මැද පික්සලයට සටහන් කිරමින් යාමයි. 

රූපය 17: Convolution ගණිත කර්මය සිදුකරන අයුරු
source: https://embarc.org/embarc_mli/doc/build/html/MLI_kernels/convolution_2d.html

3 x 3 ප්‍රමාණයේ රූප කොටසක් සොයා ගැනීමට නොහැකි වීම නිසා, මෙම ක්‍රියාවලියේදී අපට වට මායිමේ ඇති පික්සෙල් වලට පිරවීමට Convolution කර්මයෙන් නව අගයක් සොයා ගත නොහැකි බව ඔබට වැටහෙනු ඇත. මෙම ගැටළුව හේතුවෙන්, Convolution කර්මයෙන් ලැබෙන පිලුතුරු රුපයේ විශාලත්වය මුල් රුපයට වඩා අඩුය. අපි පින්තූරයකටමෙවන් කර්නල් නැත්නම් ෆිල්ටර්ස් කිහිපයක් යෙදීම දිගටම කරගෙන ගියහොත් අවසාන ප්‍රතිඵලය මුල් රූපයට වඩා ඉතා කුඩා වනු ඇත.

මේ සඳහා එක් විසඳුමක් වන්නේ Convolution කර්මයට පෙරාතුව පින්තුරය වටා, එහි දාරයේ පික්සෙල්වල කොපියක් බෝඩරයක් ලෙස යෙදීමයි. මෙය padding ලෙස හැදින්වේ. මෙම ගැටළුව විසඳීම සඳහා තවත්විවිධ වූ padding ක්‍රම තිබේ. පහත දැක්වෙන නිරූපණය මඟින් ඔබට Convolutionකර්මය පිළිබඳ වඩා හොඳ අදහසක් ලබා දෙනු ඇත.


රූපය 18: Convolution ගණිත කර්මය සිදුකරන අයුරු 
source: https://towardsdatascience.com/types-of-convolution-kernels-simplified-f040cb307c37

රූපයකින් විශේෂ වූ දත්තයන් උකහා ගැනීමට භාවිතාවන ප්‍රධානතම ගණිතකර්මය වන්නේ මෙයයි. කෙසේවෙතත් අපි මෙහිදී කතා කලමෙම දිවිමාන convolution කර්මය එහි මුලිකම අර්ථ දැක්වීමට තරමක් වෙනස්ය. ඒ ගැන වැඩි තොරතුරු මෙතනින් කියවිය හැක.

Video Processing

වීඩියෝවක් යනු වේගයෙන් ගමන් කරන රූපරාමු සමූහයකි. එබැවින් අප රූපයකට යොදන සියලුම රූප සැකසුම් ක්‍රම වීඩියෝවකට (වීඩියෝවේ එක් එක් රුපරාමු සඳහා) ද යෙදිය හැකිය. රූපයකට අමතරව වීඩියෝ සැකසුම් වලදී යම් යම් අමතර කරුණුද සලකා බැලිය යුතු නමුත් රූප සැකසුම් පිළිබඳව ඔබ හුරුපුරුදු නම් වීඩියෝ සැකසුම් ඔබට අධ්‍යයනය කිරීමට පහසු ක්ෂේත්‍රයක් වනු ඇත.

Computer Vision සදහා ඇති මෘදුකාංග සහ වෙනත් සහායක

Computer vision යනු  image processing සහ video processing යන  ක්ෂේත්‍ර දෙකේ එකතුවකි. මේ සදහම සංවර්ධනය වූ විවෘත (open source - free) සම්පත් මෙන්ම සංවෘත (closed source) සම්පත් විශාල ප්‍රමාණයක් පවතී.

OpenCV

OpenCV (Opensource Compuer Vision) යනු computer vision සහ machine learning සඳහා  වූ විවිධ පහසුකම් අඩංගු open source library එකකි. මුහුණු හඳුනා ගැනීම සහ පුද්ගලයින් හඳුනා ගැනීම (face detection and recognition), වස්තු හඳුනා ගැනීම (object detection), චලනය වන වස්තූන් අධීක්ෂණය කිරීම (motion analysis), කැමරා චලනයන් නිරීක්ෂණය කිරීම (camera motion tracking), අක්ෂි චලනයන් නිරීක්ෂණය (eye tracking) කිරීම, වස්තු වල ත්‍රිමාණ ආකෘති උකහා ගැනීම (3D reconstruction), වැඩි දියුණු කළ යථාර්ථය ආවරණයක් (augmented reality) නිර්මාණය කිරීම ඇතුළු විවිධ කාර්යයන් ඉටු කළ හැකි computer vision ක්ෂේත්‍රයට අදාළ විවිධ ඇල්ගොරිතම එහි ඇත. C ++, Python, Java, MATLAB යනාදි  පරිගණක භාෂාසමග OpenCV භාවිතාකළ හැකි  අතර එය Windows, Android, Mac OS, Linux වැනි විවිධ මෙහෙයුම් පද්ධති සඳහා සහය දක්වයි.


රූපය 19: OpenCV ලාංඡනය

රූපය 20: OpenCV Object Tracking Example



Matlab

Matlab (Matrix Library) යනු 1984 දී මැත්වර්ක්ස් විසින් සංවර්ධනය කරන ලද සංඛ්‍යාත්මක පරිගණක පරිසරයකි. Computer Vision සඳහා විවිධ ඇල්ගොරිතම සහ කාර්යයන් සපයන Computer Vision Toolbox එහි අඩංගු වේ. මේවාට වස්තු හඳුනාගැනීම (object detection), වස්තු ලුහුබැඳීම (object tracking), විශේෂාංග ගැලපීම (feature matching), 3-D හි කැමරා ක්‍රමාංකනය (camera calibration in 3-D), ත්‍රිමාණ ප්‍රතිනිර්මාණය (3D reconstruction) යනාදිය ඇතුළත් වේ. ඔබට YOLO v2, ACF, Faster RCNN වැනි machine learning ඇල්ගොරිතම භාවිතා කරමින් මැට්ලැබ් හි custom object detectors පුහුණු කළ හැකිය. මෙම ඇල්ගොරිතම බහුකාර්ය ප්‍රොසෙසර (multicore processors) සහ GPU මත ධාවනය කරවඩා වේගවත් කර ගත හැකිය. Matlab නිදහස්මෘදුකාංගයක් නොවේ (not a free tool).



රූපය 21: Matlab ලාංඡනය

රූපය 22: Matlab Medical Image Processing Example



Octave

Octave යනු නිදහස් මෙවලමක් (free open-source) වන අතර එය Matlab වලට බොහෝ සෙයින් සමාන ය. මැට්ලැබ් හි මෙන් Computer Vision හා සම්බන්ධ වන මූලික කාර්යයන් සහ ඇල්ගොරිතම බොහෝමයක් මෙහි ඇත. නමුත් Matlab තරමටම දියුණු මෘදුකාංගයක් නොවේ.

රූපය 23: Octave ලාංඡනය

රූපය 23: Octave Microscope Image Processing Example


Tensorflaow

TensorFlow යනු Computer Vision ඇතුළත් කෘතිම බුද්ධිය (Artificial Intelligence - AI) සහ Machine Learning සඳහා විවිධාකාර සම්පත් ඇති නිදහස් විවෘත (free open-source) library එකකි. එය ගූගල් ආයතනය විසින් නිර්මාණය කරන ලද අතර මුලින් නිකුත් කරන ලද්දේ 2015 නොවැම්බර් 9 වන දින ය. මුහුණ හඳුනාගැනීම (facial recognition), වස්තු හඳුනා ගැනීම (object identification) වැනි Computer Vision හා අදාළ Machine Learning ආකෘති ඔබට TensorFlow හරහා ගොඩනැගීම සහ පුහුණු කිරීම කළ හැකිය. TensorFlow විසින් Python, C, C++, Java, JavaScript, Go, Swift වැනි පරිගණක භාෂාවන්ට සහය දක්වයි.



රූපය 24: Tensorflow ලාංඡනය


රූපය 25: Tensorflow Object Detection Example

Pytorch

Pytorch යනු Facebook (Meta) සමාගම විසින් හඳුන්වා දෙන Deep Learning library එකක් වන අතර Tensorflow හා සමාන ප්‍රමුඛ Deep Learning library වලින් එකකි.
Figure 26: PyTorch ලාංඡනය

CUDA

NVIDIA සමාගම විසින් CUDA (Compute Unified Device Architecture) මෙවලම සමාන්තර පරිගණනය (parallel computing) සඳහා පදනමක් ලෙස භාවිතා කරයි. NVIDIA GPU භාවිත කර ඇදහිය නොහැකි කාර්යක්ෂමතාවක්  ලබා දීමට  CUDA වලට පුළුවන්. මෙහි රූප, සන්ඥ්ඥා  (signal)සහ වීඩියෝ සැකසුම් කාර්යයන් සදහා සහායක අන්තර්ගත වේ. C, C ++, Fortran, MATLAB, Python වැනි විවිධ භාෂාවන සමග CUDA භාවිත කළ හැකිය. CUDA සහය දක්වන්නේ NVIDIA GPU සඳහා පමණි.


රූපය 27: CUDA ලාංඡනය


රූපය 28: Pose Estimation in NVIDIA Edge Devices with CUDA boost


Keras

තවත් free open-source library එකකි.  ප්‍රධාන වශයෙන්  Python පරිගණක භාෂාව  හා සම්බන්ධ deep learning සදහා භාවිත වේ. Keras තම backend එක ලෙස TensorFlow, Theano,හෝ CNTK යන මාධ්‍ය භාවිත කල හැකිය. අද  වන විට TensorFlow තුළ Keras අන්තර්ගත (builtin) කර ඇත. 



Figure 29: Keras ලාංඡනය


Figure 30: Keras - A Segmentation Network


ඉදිරි ලිපි 

මෙම ලිපියෙන් කතා කලේ Computer Vision  හා සම්බන්ධ මූලික හැදින්විමකි . ඉදිරියේදි අපි Computer Vision හා සම්බන්ධ  සිත්ගන්නා සුළු දේවල් පිලිබදව විස්තරාත්මකව ප්‍රයෝගික උදාහරණ (practical implementations) ද  සමග සාකච්ඡා කරමු. 








Comments

Post a Comment