/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 2 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠDeep ĠLearning Ġproject Ġcontributors . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin x . dl . dataset . preprocessor . image Ċ Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . image . Color Mode Ċ Ċ /** Ċ Ġ* ĠRepresents Ġthe Ġimage Ġpreprocessing Ġstage Ġof Ġthe Ġ[ org . jetbrains . kotlin x . dl . dataset . preprocessor . Pre processing ]. Ċ Ġ* ĠCons ists Ġof Ġthe Ġoperations Ġimplementing Ġ[ Image Pre processing ] Ġwhich Ġare Ġapplied Ġto Ġthe Ġimage Ġone Ġby Ġone . Ċ Ġ* Ċ Ġ* ĠSupported Ġoperations Ġinclude : Ċ Ġ* Ġ- Ġ[ crop ] Ġand Ġ[ center Crop ], Ċ Ġ* Ġ- Ġ[ resize ], Ċ Ġ* Ġ- Ġ[ rotate ], Ċ Ġ* Ġ- Ġ[ convert ] Ġand Ġ[ gray scale ], Ċ Ġ* Ġ- Ġ[ pad ]. Ċ Ġ* Ċ Ġ* Ġ@ see ĠC ro pping Ċ Ġ* Ġ@ see ĠCenter Crop Ċ Ġ* Ġ@ see ĠResize Ċ Ġ* Ġ@ see ĠRotate Ċ Ġ* Ġ@ see ĠConvert Ċ Ġ* Ġ@ see ĠPadding Ċ Ġ*/ Ċ public Ġclass ĠImage Pre processing Ġ{ ĊĠĠĠ Ġ/** ĠThe Ġinternal Ġstate Ġof Ġ[ Image Pre processing ]. Ġ*/ ĊĠĠĠ Ġinternal Ġval Ġoperations Ġ= Ġmutable ListOf < Image Pre processor >() ĊĊĠĠĠ Ġ/** ĠAdds Ġa Ġnew Ġoperation Ġto Ġthe Ġ[ operations ]. Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġadd Operation ( operation : ĠImage Pre processor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperations . add ( operation ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠApplies Ġ[ Rotate ] Ġoperation Ġto Ġrotate Ġthe Ġimage Ġby Ġan Ġarbitrary Ġangle Ġ( specified Ġin Ġdegrees ). Ġ*/ Ċ public Ġfun ĠImage Pre processing . rotate ( block : ĠRotate . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( Rotate (). apply ( block )) Ċ } Ċ Ċ /** ĠApplies Ġ[ C ro pping ] Ġoperation Ġto Ġcrop Ġthe Ġimage Ġby Ġthe Ġspecified Ġamount . Ġ*/ Ċ public Ġfun ĠImage Pre processing . crop ( block : ĠC ro pping . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( C ro pping (). apply ( block )) Ċ } Ċ Ċ /** ĠApplies Ġ[ Resize ] Ġoperation Ġto Ġresize Ġthe Ġimage Ġto Ġa Ġspecific Ġsize . Ġ*/ Ċ public Ġfun ĠImage Pre processing . resize ( block : ĠResize . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( Resize (). apply ( block )) Ċ } Ċ Ċ /** ĠApplies Ġ[ Padding ] Ġoperation Ġto Ġpad Ġthe Ġimage . Ġ*/ Ċ public Ġfun ĠImage Pre processing . pad ( block : ĠPadding . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( Padding (). apply ( block )) Ċ } Ċ Ċ /** ĠApplies Ġ[ Convert ] Ġoperation Ġto Ġconvert Ġthe Ġimage Ġto Ġa Ġdifferent Ġ[ Color Mode ]. Ġ*/ Ċ public Ġfun ĠImage Pre processing . convert ( block : ĠConvert . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( Convert (). apply ( block )) Ċ } Ċ Ċ /** ĠApplies Ġ[ Convert ] Ġoperation Ġto Ġconvert Ġthe Ġimage Ġto Ġ[ Color Mode . GRAY SCALE ]. Ġ*/ Ċ public Ġfun ĠImage Pre processing . gray scale () Ġ{ ĊĠĠĠ Ġadd Operation ( Convert ( color Mode Ġ= ĠColor Mode . GRAY SCALE )) Ċ } Ċ Ċ /** ĠApplies Ġ[ Center Crop ] Ġoperation Ġto Ġcrop Ġthe Ġimage Ġat Ġthe Ġcenter . Ġ*/ Ċ public Ġfun ĠImage Pre processing . center Crop ( block : ĠCenter Crop . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Operation ( Center Crop (). apply ( block )) Ċ }