function out = histpwl(im,a,b)
%HISTPWL(IM,A,B) menerapkan transformasi piecewise linear
transformation
%terhadap pikse-piksel citra IM, dimana A dan B adalah
vektor-vektor
%yang memuat koordinat x dan y pada kedua ujung segmen
garis.
%IM dapat bertype UINT8 atau DOUBLE.
% dan nilai-nilai dalam A dan B harus dalam rentang 0 dan 1,
% Contoh histpwl(x,[0,1],[1,0])
classChanged = 0;mengubah kelas = 0
if ~is a(im, 'double'), Mengubah nilai a ke dalam bentuk double
presisi
classChanged = 1; mengubah
kelas = 1
im= im2double(im);
mengubah bentuk nilai tiap elemen matrik citra kedalam bentuk double presisi.
end
if length(a) ~=length(b) jika panjang a dan b tidak sama
akan eror
error('Vektor A
dab B harus berukuran sama');
end
N=length(a); N sama dengan panjang a
out=zeros(size(im)); hasil 0 ukuran citra
for i=1;N-1; untuk i=1,N-1
pix=find(im>=a(i) & im<a(i+1));pixel harus lebih besar = a dan
citra lebih kecil a
out(pix)=(im(pix)-a(i)*(b(i+1)-b(i))/a(i+1)-a(i)+b(i));rumus mengubah
ukuran dalam bentuk pixel
end
pix=find(im==a(N));
out(pix)=b(N);hasil pixel = b * N (panjang a)
if classChanged==1; jika mengubah kelas==1
out=uint8(255*out);hasil dikali 255 untuk citra bertype UINT8
end
Tidak ada komentar:
Posting Komentar