Skip to content

Instantly share code, notes, and snippets.

@dcrystalj
Created January 3, 2014 01:28
Show Gist options
  • Save dcrystalj/8230874 to your computer and use it in GitHub Desktop.
Save dcrystalj/8230874 to your computer and use it in GitHub Desktop.
slike
SLIKE:
.dcm pomeni DICOM format
aeskulap - program za gledat slike
I = imread ('0010.png'); %prebere sliko
imshow(I) %narise sliko
imshow(I, [200 250]) % skrièi spekter, oz intenziteto omejimo na samo od 200 - 250
set(gca, 'Position', [0.1 0.1 0.9 0.9]) %rob od slike
subplot (1,2,1)%zaslikar veè slik na eno -> st vrstic, stolpcev, index kamor želimo risat
imshow(I); % da jo not zapiše
clf % zbriše subplot
%risanje na eno sliko
%imamo 8 bitne sivinske slik
imshow(I);
hold on
plot([0 10 50 200 500], [0 29 00 30 500], 'm') % x in y vektor magenta po sliki
%sliko filtriramo z masko in dobimo izhodno sliko sliko torej
konvoluiramo z koeficienti maske. masko obrnemo za 180°C (tak je paè postopek konvolucije
%istoležne elemente zmnožimo z masko in seštejemo
%konvolucija v octave:
%glajenje s tekoèim povpreèenjem, glajenje z mediano, raèunanje Gaussovih koeficientov in glajenje z Gaussom
%imsmooth(I, 'filter', velikost)
S = imsmooth(I, 'average', size=9) %zameglimo sliko
subplot (1,2,1);
imshow(I)
subplot(1,2,2);
imshow(S)
kernel= [1 1 1; 1 1 1; 1 1 1;] ./9
S = imfilter(I, kernel);
%ce seštejemo vse koeficiente maske in je vsota = 1 je svetlost enaka, <1 svetlost se zmanjša èe je >1 se svetlost poveèa
%fspecial ('average', size=3) %zgenerira kernel da ni treba for zanke na roke
f = fspecial ('average', size=3);
h = fspecial ('average', size=25);
S = conv2(I, kernel, 'same');
fspecial ('average', size=5)
imshow(S)
S = uint8(S); %popravimo ker mamo floate.. in en mormo met negativnih vrednosti za svetlost pixla
imshow(S)
%navadno za relief najprej naredimo konvolucijo potem prištejemo 128 potem uint
S = conv2(I, kernel, 'same');
S = S.+128
S = uint(8);
imshow(S)
I = imread('0010.png')
size(I);% 512
%[iX, iY] = size(I)
iX = 512
iY = 512
for i=1:100
I(ceil(rand()*iX), ceil(rand()*iY)) = 255;
end %slabo ker so ene random toèke bele zato uporabimo postopek z mediano -> sortiraš in uzameš srednjo vrednost
%mediana
S = imsmooth (I, 'median' size = 3)
imshow(S)
imshow(I)
imshow(S)
%raèunanje z haussom G(x,y) = e^(-(x^2+sigma) / (2*sigma^2)) -> sigma je 0.5% od 256 ---> 2.256
%teorija pravi da mormo porat 99.7% pod gausom -> 6*SIGMA zaokroženo navzgor (liho celo število)
function [kernel] = Gauss(sigma)
kSize = ceil(6*sigma);
if rem(kSize/2) == 0 %je sodo
kSize=kSize+1;
end
hsize = floor(kSize/2);
%namest for zanke uporabimo vektorizacijo
[X, Y] = meshgrid( -hSize:hSize, -hSize:hSize);
kernel = exp(-(X.^2 + Y.^2)/(2*sigma^2))/(2*pi*sigma^2);
kernel = round(kernel * (1/kernel(1,1)));
end
kernel = Gauss(2.56);
%ga narišemo
mesh(kernel) %isto kot
mesh(fspecial('gaussian', 17, 2.56)) %tole
S = imfilter(I,kernel/sum(kernel(:))); %delimo z vsoto koeficientov
imshow(S)
S = imfilter(I, fspecial('gaussian', 17, 2.56));
imshow(S)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment