Üniversite son sınıfta yazdığım aşağıdaki matlab kodunu kullanarak belirli bir alana sıkışmış dizi değerlerini genlik değerleri koruyarak diziye dağıtabilirsiniz. Belki daha az işlem gücüne ihtiyaç duyan algoritmalar yazılabilir veya yazdığım kodlarda iyileştirme yapılabilir. Burada bir resim işleme amaçlandığından dizi değerleri 0~255 arasında yayma işlemi yapmaktadır. Matlab kodunun devamında ise iki örnek resmin karşıtlık yayma sonrasındaki halleri bulunmaktadır.
Aşağıdaki içeriğin Word belgesi sürümü
%Dogrusal karsitlik yayma program kodu
clear all,close all,clc;
imge=imread('imge1.tif');
imge2=double(imge);
[w,h]=size(imge);
% Orjinal resim histogrami:
H=zeros(256,1);
for i=1:w
for j=1:h
H(imge2(i,j)+1)=H(imge2(i,j)+1)+1;
end
end
d=255/(w*h);
c(1)=d*H(1);
for i=2:255
c(i)=c(i-1)+d*H(i);
end
for i=1:w
for j=1:h
imge3(i,j)=round(c(imge2(i,j)));
end
end
% Karsitlik yayilmis resim histogrami:
H2=zeros(256,1);
for i=1:w
for j=1:h
H2(imge3(i,j)+1)=H2(imge3(i,j)+1)+1;
end
end
x = reshape(imge2',1,w*h); % transfer fonksiyonu olusturmak...
y = reshape(imge3',1,w*h); % ...uzere matrixlerin vektore donusumu
figure;imshow(imge); %orjinal imge
figure;plot(H); %orjinal histogram
figure;imshow(uint8(imge3)); %karsitlik yayilmis imge
figure;plot(H2); %karsilik yayilmis imgenin histogrami
figure;plot(x,y); %Transfer fonksiyonunun çizdirilmesi
***
0 değerinde sıkıntı çıkıyor nasıl düzeltebiliriz?
YanıtlaSil