/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġ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 Ġexamples . dataset Ċ Ċ import Ġorg . jetbrains . kotlin x . dl . api . extension . get 3 D Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . Dataset Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . On Fly Image Dataset Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . handler . extract C if ar 1 0 Labels An s Sort Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . image . Color Order Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . preprocessor .* Ċ import Ġorg . jetbrains . kotlin x . dl . dataset . preprocessor . image .* Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Graphics Ċ import Ġjava . io . FileReader Ċ import Ġjava . net . URL Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util .* Ċ import Ġjavax . swing . J Frame Ċ import Ġjavax . swing . JPanel Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠThis Ġexample Ġshows Ġhow Ġto Ġdo Ġimage Ġpreprocessing Ġfrom Ġscratch Ġusing Ġ[ Pre processing ]. Ċ Ġ* Ċ Ġ* ĠAlso Ġwe Ġuse Ġthe Ġ[ JPanel ] Ġto Ġvisual ise Ġ( rot ated Ġpi geon Ġshould Ġbe Ġdisplayed ). Ċ Ġ* Ċ Ġ* ĠIt Ġincludes : Ċ Ġ* Ġ- Ġdataset Ġcreation Ġfrom Ġimages Ġlocated Ġin Ġresource Ġfolder Ċ Ġ* Ġ- Ġimage Ġpreprocessing Ċ Ġ* Ġ- Ġimage Ġvisual isation Ċ Ġ*/ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠ Ġval Ġreader Ġ= ĠFileReader (" data . properties ") ĊĠĠĠ Ġproperties . load ( reader ) ĊĊĠĠĠ Ġval Ġc if ar Labels Archive Ġ= Ġproperties [" cif ar Labels Archive "] Ġas ĠString ĊĊĠĠĠ Ġval Ġresource : ĠURL Ġ= ĠImage Pre processing :: class . java . getResource ("/ datasets / v gg ") ĊĠĠĠ Ġval Ġimage Directory Ġ= ĠPaths . get ( resource . to URI ()). to File () ĊĊĠĠĠ Ġval Ġpreprocessing : ĠPre processing Ġ= Ġpreprocess Ġ{ ĊĠĠĠĠĠĠĠ Ġtransform Image Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath To Data Ġ= Ġimage Directory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Shape Ġ= ĠImage Shape ( 2 2 4 , Ġ 2 2 4 , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Mode Ġ= ĠColor Order . BGR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrotate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdegrees Ġ= Ġ 6 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrop Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresize Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Width Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Height Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpolation Ġ= ĠInterpol ation Type . NE ARE ST ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransform Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre scale Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscaling Coefficient Ġ= Ġ 2 5 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġy Ġ= Ġextract C if ar 1 0 Labels An s Sort ( cif ar Labels Archive , Ġ 1 0 ) ĊĠĠĠ Ġval Ġdataset Ġ= ĠOn Fly Image Dataset . create ( preprocessing , Ġy ) ĊĠĠĠ Ġval Ġbatch Iter : ĠDataset . Batch Iterator Ġ= Ġdataset . batch Iterator ( ĊĠĠĠĠĠĠĠĠ 8 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġraw Image Ġ= Ġbatch Iter . next (). x [ 1 ] ĊĊĠĠĠ Ġval Ġframe Ġ= ĠJ Frame (" Filters ") ĊĠĠĠ Ġframe . content Pane . add ( Images JPanel ( raw Image , ĠImage Shape ( 3 0 0 , Ġ 3 0 0 , Ġ 3 ))) ĊĠĠĠ Ġframe . setSize ( 1 0 0 0 , Ġ 1 0 0 0 ) ĊĠĠĠ Ġframe . isVisible Ġ= Ġtrue ĊĠĠĠ Ġframe . default Close Operation Ġ= ĠJ Frame . EXIT _ ON _ CLOSE ĊĠĠĠ Ġframe . is Resizable Ġ= Ġfalse Ċ } ĊĊ Ċ private Ġclass ĠImages JPanel ( ĊĠĠĠ Ġval Ġdst : ĠFloat Array , ĊĠĠĠ Ġval Ġimage Shape : ĠImage Shape Ċ ) Ġ: ĠJPanel () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpaint ( graphics : ĠGraphics ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġimage Shape . height !!. toInt ()) Ġ{ Ġ// Ġrows ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 0 Ġuntil Ġimage Shape . width !!. toInt ()) Ġ{ Ġ// Ġcolumns ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpixel Width Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpixel Height Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ 1 0 0 Ġ+ Ġi Ġ* Ġpixel Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 1 0 0 Ġ+ Ġj Ġ* Ġpixel Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . get 3 D ( i , Ġj , Ġ 2 , Ġimage Shape . width !!. toInt (), Ġimage Shape . channels . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . get 3 D ( i , Ġj , Ġ 1 , Ġimage Shape . width !!. toInt (), Ġimage Shape . channels . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . get 3 D ( i , Ġj , Ġ 0 , Ġimage Shape . width !!. toInt (), Ġimage Shape . channels . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr 1 Ġ= Ġ( min ( 1 . 0 f , Ġmax ( r Ġ* Ġ 0 . 8 f , Ġ 0 . 0 f )) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg 1 Ġ= Ġ( min ( 1 . 0 f , Ġmax ( g Ġ* Ġ 0 . 8 f , Ġ 0 . 0 f )) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb 1 Ġ= Ġ( min ( 1 . 0 f , Ġmax ( b Ġ* Ġ 0 . 8 f , Ġ 0 . 0 f )) Ġ* Ġ 2 5 5 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠColor ( r 1 , Ġg 1 , Ġb 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . color Ġ= Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . fillRect ( x , Ġy , Ġpixel Width , Ġpixel Height ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphics . draw Rect ( x , Ġy , Ġpixel Width , Ġpixel Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ