clear all;
kc = 4;
x = double(zeros(512,512,4));
x(:,:,1) = imread('E:\band\band1.gif');
x(:,:,2) = imread('E:\band\band2.gif');
x(:,:,3) = imread('E:\band\band3.gif');
x = double(x);
centers = zeros(kc,3);
for i = 1:kc
temp = zeros(1,2);
temp(:) = randi([1,512],1,2);
centers(i,1) = x(temp(1),temp(2),1);
centers(i,2) = x(temp(1),temp(2),2);
centers(i,3) = x(temp(1),temp(2),3);
end
for l = 1:5
count = zeros(kc,1);
new_c = zeros(kc,3);
for i = 1:512
for j = 1:512
dist = double(zeros(kc));
min = intmax;
pointer = -1;
for k = 1:kc
v1 = [x(i,j,1),x(i,j,2),x(i,j,3)];
v2 = [centers(k,1),centers(k,2),centers(k,3)];
dist(k) = norm(v1-v2);
if dist(k) < min
min = dist(k);
pointer = k;
end
end
x(i,j,4) = pointer;
count(pointer) = count(pointer) + 1;
new_c(pointer,1) = new_c(pointer,1) + x(i,j,1);
new_c(pointer,2) = new_c(pointer,2) + x(i,j,2);
new_c(pointer,3) = new_c(pointer,3) + x(i,j,3);
end
end
for i = 1:kc
centers(i,1) = new_c(i,1)/count(i);
centers(i,2) = new_c(i,2)/count(i);
centers(i,3) = new_c(i,3)/count(i);
end
disp(l);
end
for i = 1:512
for j = 1:512
p = x(i,j,4);
switch(p)
case 1
x(i,j,:) = [255,255,255,1];
case 2
x(i,j,:) = [255,0,0,2];
case 3
x(i,j,:) = [0,255,0,3];
case 4
x(i,j,:) = [0,0,255,4];
% case 5
% x(i,j,:) = [300,0,100,5];
end
end
end
y = x(:,:,1:3);
imshow(y,[]);
kc = 4;
x = double(zeros(512,512,4));
x(:,:,1) = imread('E:\band\band1.gif');
x(:,:,2) = imread('E:\band\band2.gif');
x(:,:,3) = imread('E:\band\band3.gif');
x = double(x);
centers = zeros(kc,3);
for i = 1:kc
temp = zeros(1,2);
temp(:) = randi([1,512],1,2);
centers(i,1) = x(temp(1),temp(2),1);
centers(i,2) = x(temp(1),temp(2),2);
centers(i,3) = x(temp(1),temp(2),3);
end
for l = 1:5
count = zeros(kc,1);
new_c = zeros(kc,3);
for i = 1:512
for j = 1:512
dist = double(zeros(kc));
min = intmax;
pointer = -1;
for k = 1:kc
v1 = [x(i,j,1),x(i,j,2),x(i,j,3)];
v2 = [centers(k,1),centers(k,2),centers(k,3)];
dist(k) = norm(v1-v2);
if dist(k) < min
min = dist(k);
pointer = k;
end
end
x(i,j,4) = pointer;
count(pointer) = count(pointer) + 1;
new_c(pointer,1) = new_c(pointer,1) + x(i,j,1);
new_c(pointer,2) = new_c(pointer,2) + x(i,j,2);
new_c(pointer,3) = new_c(pointer,3) + x(i,j,3);
end
end
for i = 1:kc
centers(i,1) = new_c(i,1)/count(i);
centers(i,2) = new_c(i,2)/count(i);
centers(i,3) = new_c(i,3)/count(i);
end
disp(l);
end
for i = 1:512
for j = 1:512
p = x(i,j,4);
switch(p)
case 1
x(i,j,:) = [255,255,255,1];
case 2
x(i,j,:) = [255,0,0,2];
case 3
x(i,j,:) = [0,255,0,3];
case 4
x(i,j,:) = [0,0,255,4];
% case 5
% x(i,j,:) = [300,0,100,5];
end
end
end
y = x(:,:,1:3);
imshow(y,[]);
No comments:
Post a Comment