Uvod u programski jezik Julia - Obrada slike - Histogram, ekvalizacija histograma

In [1]:
# U obradi slike često se javlja potreba za takozvanim histogramom slike. Histogram slike predstavlja grafički 
# prikaz koliko je piksela naše slike određenog intenziteta (bilo da se radi o RGB slikama, crno-belim slikama, 
# slikama u intenzitetima sive boje itd.). Histogram kao takav često predstavlja gradivni element algoritama za 
# segmentaciju slike, izdvajanje objekata na slici (npr. izdvajanje teksta od pozadine), popravku kvaliteta slike itd.
In [2]:
#Pre svega, potrebno je izvršiti instaliranje odgovarajućeg paketa za rad sa histogramom slike
import Pkg;
Pkg.add("ImageContrastAdjustment");
   Updating registry at `~/.julia/registries/General`
    
   Updating git-repo `https://github.com/JuliaRegistries/General.git`
[1mFetching: [========================================>]  100.0 %[36mFetching: [=====>                                   ]  11.0 %Fetching: [=====>                                   ]  12.1 %Fetching: [======>                                  ]  13.8 %Fetching: [=======>                                 ]  15.2 %Fetching: [=======>                                 ]  16.4 %Fetching: [========>                                ]  18.5 % [===========>                             ]  26.1 %.9 %Fetching: [=============>                           ]  32.1 %Fetching: [==============>                          ]  34.2 %Fetching: [===============>                         ]  36.2 %Fetching: [================>                        ]  38.5 % [====================>                    ]  49.2 %Fetching: [========================>                ]  58.0 %Fetching: [=============================>           ]  70.8 %Fetching: [=============================>           ]  71.5 %Fetching: [==============================>          ]  73.0 %Fetching: [==============================>          ]  73.6 %Fetching: [==============================>          ]  74.3 %Fetching: [==============================>          ]  74.8 %Fetching: [===============================>         ]  75.4 %Fetching: [===============================>         ]  75.8 %Fetching: [===============================>         ]  76.3 %Fetching: [===============================>         ]  76.7 %Fetching: [===============================>         ]  77.2 %Fetching: [================================>        ]  77.7 %Fetching: [================================>        ]  78.3 %Fetching: [================================>        ]  78.9 %Fetching: [================================>        ]  79.5 % [====================================>    ]  88.4 %Fetching: [======================================>  ]  92.9 %Fetching: [=======================================> ]  96.1 %
  Resolving package versions...
   Updating `~/.julia/environments/v1.4/Project.toml`
  [f332f351] + ImageContrastAdjustment v0.3.7
   Updating `~/.julia/environments/v1.4/Manifest.toml`
 [no changes]
In [12]:
using ImageContrastAdjustment, TestImages, Images, Plots
In [13]:
my_img = testimage("house.tif");
mosaicview(my_img)
Out[13]:
In [21]:
#Histogram slike prikazane u nijansama sive možemo dobiti npr. na sledeći način:

#UInt8 ce predstavljati tip podataka tj. opseg vrednosti u kojem želimo da predstavimo vrednosti intenziteta 
#osvetljaja našeg piksela
histogram(vec(reinterpret(UInt8, my_img)))
Out[21]:
In [24]:
#Ukoliko radimo sa npr. slikom u RGB formatu, i želimo da vidimo kako bi izgledao njen histogram osvetljaja, to
#možemo uraditi na sledeći način:

my_img = testimage("coffee.png");
my_img2 = Gray.(my_img);

mosaicview(my_img, my_img2)
┌ Warning: `mosaicview(A1::AbstractArray, A2::AbstractArray; kwargs...)` is deprecated, use `mosaic(A1, A2; kwargs...)` instead.
│   caller = top-level scope at In[24]:6
└ @ Core In[24]:6
Out[24]: