toČkovne homogene operacije - Študentski.net...princip deli in združi(split and merge) primer:...

70
TOČKOVNE HOMOGENE OPERACIJE 1

Upload: others

Post on 28-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • TOČKOVNE HOMOGENE OPERACIJE

    1

  • 2

    Točkovne homogene operacije

    • preslikave, odvisne samo od vrednosti slikovnega elementa

    • neodvisne od slikovnih elementov v soseščini (filtri) in lokacije

    • povečanje kontrasta ip.multiply(1.5)

    • posvetlitev ip.add(10)

    • upragovljenje

  • Točkovne operacije in histogrami

    koši se lahko pomikajo (shift) ali pa združujejo (merge)

    3

  • • vrednosti intenzitet raztegnemo čez celoten interval

    – pomik najmanjše intenzitete alow v 0

    – skaliranje (amax – amin)/(ahigh - alow)

    – pomik v amin

    4

    Točkovne operacije: razteg histograma

  • • predstavitev histograma, ki je neodvisna od velikosti slike

    • histogram normaliziramo z

    • gostota verjetnosti diskretne spremenljivke

    • p(i) je verjetnost realizacije intenzitete i

    5

    Točkovne operacije: histogram kot verjetnostna porazdelitev

  • • kumulativni histogram

    • kumulativna verjetnostna porazdelitev

    • monotono naraščajoča funkcija

    6

    Točkovne operacije: kumulativna verjetnostna porazdelitev in histogram

  • • ekvalizacija: enakomerno porazdeljena verjetnost intenzitet

    7

    Točkovne operacije: ekvalizacija histograma

  • • denimo da želimo sliko s histogramom h(i), ki zavzema interval vrednosti [imin , imax] pretvoriti v sliko z ekvaliziranim histogramom heq(i ’)

    • ciljna slika naj zavzema vrednosti [i ’min, i ’max]

    • iščemo monotono naraščajočo preslikavo i ’ = feq(i)

    da bo heq(i ’) konstanten

    8

    Točkovne operacije: ekvalizacija histograma

    j

    k

    k

    j

    k

    keq ihih00

    )()(minmax

    )'(ii

    MNiheq

  • 9

    Točkovne operacije: ekvalizacija histograma

    i

    i

    dsshMN

    iiii

    min

    )()( minmax

    min

    pogoj

    zapišemo z vsotami verjetnostnih porazdelitev

    in prevedemo v zvezen problem

    j

    k

    k

    j

    k

    keq ihih00

    )()(

    minmax

    1)()'(

    iiMN

    ihip

    eq

    eq

    MN

    ihip

    )()(

    j

    k

    k

    j

    k MN

    ih

    ii 00 minmax

    )(

    )(

    1

    i

    i

    i

    i

    dsshMNii

    ii

    iiminmin

    )(1

    )(

    )(

    )(

    1

    minmax

    min

    minmax

  • 10

    Točkovne operacije: ekvalizacija histograma

    nazaj v diskretno:

    Kumulativni histogram H(ij)!

    j

    ik

    kjeqj ihMN

    iiiifi

    min

    )()(

    )( minmaxmin

    i

    i

    dsshMN

    iiii

    min

    )()( minmax

    min

    ]255,0[],[);()( maxmin iiiHMN

    Kif jjeq

  • 11

    Točkovne operacije: ekvalizacija histograma

    )()( aHMN

    Kafa eq

  • Histogram equalization

    public void run(ImageProcessor ip) {

    int w = ip.getWidth();

    int h = ip.getHeight();

    int M = w * h;

    int K = 256;

    int[] H = ip.getHistogram();

    for (int j = 1; j < H.length; j++) {

    H[j] = H[j-1] + H[j];

    }

    for (int v = 0; v < h; v++) {

    for(int u = 0; u < w; u++) {

    int a = ip.get(u,v);

    int b = H[a] * (K-1) / M;

    ip.set(u, v, b);

    }

    }

    }

    izračun kumulativnega histograma

    izračun preslikave

  • Histogram equalization (lookup table)

    public void run(ImageProcessor ip) {

    int w = ip.getWidth();

    int h = ip.getHeight();

    int M = w * h;

    int K = 256;

    int[] H = ip.getHistogram();

    for (int j = 1; j < H.length; j++) {

    H[j] = H[j-1] + H[j];

    }

    for (int j = 0; j < H.length; j++) {

    H[j] = H[j] * (K-1) / M;

    }

    ip.applyTable(H);

    }

    Za točkovne operacije lahko uporabimo predhodno izračunane lookup tabele

    izračun kumulativnega histograma

    izračun lookup tabele

    uporabi tabelo na ip

  • • Splošni princip prilagajanja histograma

    • PA slike IA naj ustreza referenčnem PR

    14

    Točkovne operacije: prilagajanje histograma

  • • Pogoj: funkcija PR(i) mora biti invertibilna

    • referenčne histograme pogosto definiramo kot odsekoma linearno funkcijo

    15

    Točkovne operacije: prilagajanje histograma

  • • Prilagajanje histograma histogramu referenčne slike:

    – če so nekateri koši v h(i) prazni, H(i) ni invertibilna

    • “Tetris” prilagajanje

    16

    Točkovne operacije: prilagajanje histograma

  • 17

    Točkovne operacije: prilagajanje histograma

  • TOČKOVNA SEGMENTACIJA

    18

  • Upragovljenje

    Točkovna segmentacija

    slikovne elemente razdelimo v n razredov glede na vrednost (sivinsko, RGB, Hue v HSV...)

    točkovna segmentacije ne upošteva lege in sosednosti

    regije niso zakjučene

    točkovna segmentacija kot gručenje

    19

    Točkovna segmentacija

  • Primer

    20

    Točkovna segmentacija

    Trava

    Nebo

    Cvetovi

    Hue

  • tri gruče slikovnih elementov

    če poznamo število gruč, lahko poiščemo ustrezne lokalne maksimume

    potrebujemo še mejemed gručami

    gruče lahko modeliramo z Gaussovo porazdelitvijo

    21

    Točkovna segmentacija

    Trava

    Nebo

    Cvetovi

    Hue

  • estimacija normalne porazdelitve

    poznamo ¹, iščemo ¾

    poiščemo lahko odmik kjer je x=h/2

    22

    Točkovna segmentacija

    2

    2

    2

    )(

    2

    1)(

    x

    exG

    2

    2

    2

    2

    2

    )(

    2

    )(

    2

    1

    2

    1

    )(2

    1)(

    ee

    GxG

    x

    2

    1ln

    2

    )(

    2

    1

    2

    2

    02

    )(2

    2

    x

    ee

    x 2.1

    )2ln(2

    2

    1ln2)( 22

    x

    x

    x

  • v histogramu poiščemo levi in desni ¹- xl in ¹+xd z vrednostmi ¼ h/2

    ¾ = (xl + xd)/2.4

    porazdelitev N(¹, ¾) lahko uporabimo za klasifikacijo slikovnih elementov

    – npr. v razred uvrstimo slikovne elemente v intervalu ¹-² ¾, ¹+² ¾

    – ali pa za slikovni element izračunamo verjetnost pripadnosti posameznemu razredu

    23

    Točkovna segmentacija

    2.1x

  • 24

    K-means segmentacija

    Pogosto je težko določiti maksimume, predpodstavimo pa lahko število razredovUporabimo lahko algoritme samodejnega gručenja, npr. K-means

  • K-means gručenje hevristično minimizira varianco v gručah

    Izberi k začetnih središč gruč ¹i, i=1 k

    Ponavljaj

    vsako od vrednosti xi pridruži k najbližjemu središču

    ko so vse vrednosti razdeljene, izračunaj nova središča gruč

    do konvergence

    25

    K-means segmentacija

  • SEGMENTACIJA REGIJ

    26

  • Slika kot množica regij

    R = [ Ri , Ri Å Rj = 0

    Kriterij za segmentacijo:

    H(Ri) homogenost posamezne regije

    sosednje regije se razlikujejo

    H(Ri) = TRUE

    H(Ri Å Rj) = FALSE

    27

    Segmentacija regij

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    28

    Deli in združi

    deli združi

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    29

    Quadtree segmentacija

    12

    3 4

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    30

    Quadtree segmentacija

    12

    3 4

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    31

    Quadtree segmentacija

    12

    3 4

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    32

    Quadtree segmentacija

    12

    3 4

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    33

    Quadtree segmentacija

    združi

    12

    3 4

  • Želimo lokalno konsistentne regije

    Princip deli in združi (split and merge)

    Primer: quadtree segmentacija

    ponavljaj

    razdeli nehomogena področja na 4 podpodročja

    združi podobna homogena podpodročja z istim staršem

    dokler obstaja nehomogeno področje ali l

  • Quadtrees regije se delijo na 4 enake regije

    Iskanje sosednjih vozlišč zamudno (dodatna struktura – graf sosednosti)

    Regije pa lahko ločujemo na nivoju slikovnega elementa

    Primer: Normalized graph cuts

    Slika kot graf G(V,E)

    “Graph cuts” segmentacija

  • cij – kapaciteta povezave

    cij ¼ S(I(i), I(j))

    Rez cut(S, T) deli V na disjunkni množici S in T

    kapaciteta reza

    Idealna meja bo sliko delila na

    dve regiji z minimalnim rezom

    c(S, T) -> min

    “Graph cuts” segmentacija

    5 5 52

    5

    5

    5

    55

    3 3

    3

    6

    6

    4

    4 4 4

    52

    3

    3

    3

    6 6

    6

    66

    5

    5

    5

    5

    5

    5

    5

    4

    42 5

    2

  • cij – kapaciteta povezave

    cij ¼ S(I(i), I(j)) ; S je mera podobnosti

    c(S, T) -> min

    Vendar pogoj favorizira krajše reze

    Normalizacija glede na kapacitete regij

    a(S)

    Normalized cut

    Normalized graph cuts

    5 5 52

    5

    5

    5

    55

    3 3

    3

    6

    6

    4

    4 4 4

    52

    3

    3

    3

    6 6

    6

    66

    5

    5

    5

    5

    5

    5

    5

    4

    42 5

    2

    c=9

    S T

    V

    c=31S T

    )(

    1

    )(

    1),(),(

    TaSaTScTSNc

  • Nc (S, T) = c(S,T)(1/a(S) + 1/a(T))

    Normalized cut

    Normalized graph cuts

    5 5 52

    5

    5

    5

    55

    3 3

    3

    6

    6

    4

    4 4 4

    52

    3

    3

    3

    6 6

    6

    66

    5

    5

    5

    5

    5

    5

    5

    4

    42 5

    2

    Nc=1.05

    S T

    Nc=0.7

  • Število možnih rezov

    2|V|-2

    KompleksnostO(2|V|)

    Rešitev lahko aproksimiramo z

    uporabo spektralne analize

    matrike podobnosti

    Normalized graph cuts

  • Normalized graph cuts

    Normalized Cuts and Image SegmentationJianbo Shi and Jitendra MalikIEEE Transactions on Pattern Analysis and Machine Intelligence, 22(8), 888-905, August 2000.

  • DISKRETNA FOURIEROVA TRANSFORMACIJA

    41

  • • Slikovni vektorski prostor (Pixel space)

    • Slika je linearna kombinacija baznih vektorjev (matrični vektorji)

    42

    Diskretna fourierova transformacija

    MN

    1000

    0000

    0000

    0000

    ...

    0000

    0000

    0000

    0100

    0000

    0000

    0000

    0010

    0000

    0000

    0000

    0001

    ),( 321 naaaayxI

    • Bazne funkcije razpenjajo prostor vseh slik.Prostor lahko transformiramo tako, da bodo podatki (slike) predstavljene v drugi bazi.

    je vektorski zapis matrike

    je matrični zapis nove baze

    (:)UIa

    (:)I

    U

  • • je ortonormirana vektorska baza

    • Diskretni fourierov transform: U je baza harmoničnih komponent

    • Enodimenzionalni transform:

    43

    Diskretna fourierova transformacija

    U

    uxn

    jN

    u

    uxn

    jN

    x

    euFN

    xI

    exIN

    uF

    uFxI

    21

    0

    21

    0

    )(1

    )(

    )(1

    )(

    )()(

  • • Implementacija

    44

    Diskretna fourierova transformacija

    1

    0

    ImRe

    21

    0

    2sin2cos)()(1

    )(1

    )(

    )()(

    N

    x

    uxN

    jN

    x

    N

    uxi

    N

    uxxIixI

    N

    exIN

    uF

    uFxI

    )(xI )(xC Nu )(xSN

    u

  • Discrete Fourier Transform

    Complex[] DFT(Complex[] img, boolean forward) {

    int N = img.length;

    double s = 1 / Math.sqrt(N);

    Complex[] F = new Complex[N];

    for (int u = 0; u < N; u++) {

    double sumRe = 0;

    double sumIm = 0;

    double phim = 2 * Math.PI * u / N;

    for (int x = 0; x < N; x++) {

    double imgRe = img[u].re;

    double imgIm = img[u].im;

    double cosw = Math.cos(phim * u);

    double sinw = Math.sin(phim * u);

    if (!forward)

    sinw = -sinw;

    sumRe += imgRe * cosw + imgIm * sinw;

    sumIm += imgIm * cosw – imgRe * sinw;

    }

    F[u] = new Complex(s * sumRe, s * sumIm);

    }

    return F;

    }

    class Complex {

    double re, im;

    Complex(double re, double im) {

    this.re = re;

    this.im = im;

    }

    }

    class Complex

  • • 2-D DFT je definiran kot

    46

    Diskretna fourierova transformacija

    M

    y

    N

    x

    im

    M

    y

    N

    x

    M

    vy

    N

    uxj

    N

    vy

    M

    uxi

    N

    vy

    M

    uxyxIiyxI

    MN

    eyxIMN

    vuF

    vuFyxI

    0 0

    Re

    0 0

    )(2

    2sin2cos),(),(1

    ),(1

    ),(

    ),(),(

    ),( yxI ),(,

    , yxCNM

    vu ),(,

    , yxSNM

    vu

  • 2-D harmonične komponente

    47

    v=0

    v=1

    v=2

    v=3

    u=0 u=1 u=2 u=3),(,, yxC

    NM

    vu

  • 2-D transform izračunamo separabilno iz 1-D transforma

    48

    Diskretna fourierova transformacija

    M

    vyjM

    y

    M

    vyjM

    y

    N

    x

    N

    uxj

    M

    y

    N

    x

    M

    vy

    N

    uxj

    eyuFM

    eeyxINM

    eyxIMN

    vuF

    vuFyxI

    2

    0

    2

    0 0

    2

    0 0

    )(2

    ),(1

    ),(11

    ),(1

    ),(

    ),(),(

  • 2-D transform izračunamo separabilno iz 1-D transforma

    49

    Diskretna fourierova transformacija

    for y = 0 ... N-1I(.,y) = DFT(I(.,y))

    for x = 0 .. M-1I(x,.) = DFT(I(x,.))

  • • Periodična funkcija

    F (u,v) = F ( u + k1M, v + k2N )

    • če je I(x,y) realna, je absolutna vrednost |F (u,v)| sredinsko simetrična

    |F (u,v)| = |F (-u, -v)|

    • Realna in imaginarna komponenta FRe , FIm

    • Fazni in močnostni spekter

    • Navadno prikazujemo |F(u, v)| s premikom spektra v sredino slike

    - M / 2

  • 51

    Lastnosti diskretnega 2-D Fourierovega transforma

  • 52

    Interpretacija 2-D Fourierovega transforma

    )sin,cos(ˆ),(

    ˆ

    NMfvu

    f

    u

    v

    I(x,y) F(u,v)

  • 53

    Lastnosti diskretnega 2-D Fourierovega transforma

    • Definicija transforma predvideva periodično I(x, y)

  • • Rotacija

    • Linearna kombinacija

    • Translacija

    • Demonstriraj!

    54

    Lastnosti 2D diskretnega Fourierovega transforma

    ),(),(),(),( 22112211 vuFkvuFkyxIkyxIk

    )(2

    00

    00

    ),(),( Mvy

    N

    uxj

    evuFyyxxI

  • Primeri 2-D DFT

    55

  • Primeri 2-D DFT

    56

  • Inverzni DFT

    57

  • Idealni filtri

    • Nizko-propustni

    • Visoko-propustni

    58

    • Pasovno-propustni

  • Idealni filtri

    59

  • Konvolucijski teorem

    • Množenje v frekvenčnem prostoru = konvolucija v slikovnem prostoru

    • Konvolucija

    60

    ))()((1 HFIFFHI

    2

    2

    2

    2

    ),(),(),(

    m

    mh

    m

    mk

    H kyhxIkhHHIyxI

  • Filtriranje s konvolucijo

    61

    2

    2

    2

    2

    ),(),(),(

    m

    mh

    m

    mk

    H kyhxIkhHHIyxI

    Jedro H dimenzije m x m

    Primer: filter povprečenja

    111

    111

    111

    9

    1avgH

    2

    2

    2

    2

    ),(),(),(

    m

    mh

    m

    mk

    H kyhxIkhHHIyxI

    linearna konvolucija

    linearna korelacija

  • Filtriranje s konvolucijo

    62

    111

    111

    111

    9

    1avgH

    )( avgHF

  • Realizacija linearnega filtriranja

    63

  • 3x3 average filter

    import ij.*;

    import ij.pluginFilter.PluginFilter;

    import ij.process.*;

    public class Filter_Avg implements PlugInFilter {

    public void run(ImageProcessor img) {

    int w = img.getWidth();

    int h = img.getHeight();

    ImageProcessor copy = img.duplicate();

    for (int v = 1; v < h-2; v++) {

    for (int u = 1; u < w-2; u++) {

    int sum = 0;

    for (int j = -1; j

  • Smoothing filter

    public void run(ImageProcessor img) {

    int w = img.getWidth();

    int h = img.getHeight();

    double [][] filter = {

    {0.075, 0.125, 0.075}.

    {0.125, 0.200, 0.125},

    {0.075, 0.125, 0.075}

    };

    ImageProcessor copy = img.duplicate();

    for (int v = 1; v

  • Primeri linearnih filtrov

    66

    Povprečni filter

    Gaussov filter

    Laplaceovfilter

  • Linearnost, asociativnost in separabilnost

    67

    Linearnost

    Asociativnost

    Separabilnost

  • Linearnost, asociativnost in separabilnost in x/y separabilnost

    68

    x/y separabilnost

  • 69

    Gaussov filter

    x/y separabilnost

    Zaradi diskretnega vzorčenja mora biti okno dovolj veliko; tipično +/- 3¾

  • 1D Gaussian Kernel

    float[] makeGaussianKernel1D(double sigma) {

    int center = (int)(3.0*sigma);

    float[] kernel = new float[2*center+1];

    double sigma2 = sigma * sigma;

    for (int i = 0; i < kernel.lenght; i++) {

    double r = center – i;

    kernel[i] = (float) Math.exp(-0.5 * (r*r) / sigma2);

    }

    return kernel;

    }