How to skip "roipoly" step?
Mostrar comentarios más antiguos
Hi Everybody... wish you are doing well..
I got nice color segmentation color from your site "File Exchange" that one done by webinar, it's working well but i had a problem that i want to skip the roipoly step , where i am already using a segmented image as attached. Sample image:http://imageshack.us/photo/my-images/189/8sba.jpg/
I would appreciate your help telling me how can i use it on a segmented image instead of using "roipoly"...
Thanks Alot...
The Code:
% load image
rgb = imread('segmented 3.jpg');
x(:,:,1)=imresize(rgb(:,:,1),[480 640]);
x(:,:,2)=imresize(rgb(:,:,2),[480 640]);
x(:,:,3)=imresize(rgb(:,:,3),[480 640]);
rgb=x;
% smooth image (reduce noise/color variation)
rgb = imfilter(rgb,ones(3,3)/9);
% view image and RGB layers (nonuniform illumination)
figure(1), set(1,'position',[99 79 826 589])
subplot(2,2,1), subimage(rgb), title('fabric image'), axis off
subplot(2,2,2), map=gray(256); map(:,2:3)=0; subimage(rgb(:,:,1),map), title('red layer'), axis off
subplot(2,2,3), map=gray(256); map(:,[1 3])=0; subimage(rgb(:,:,2),map), title('green layer'), axis off
subplot(2,2,4), map=gray(256); map(:,1:2)=0; subimage(rgb(:,:,3),map), title('blue layer'), axis off
% RGB histograms (poor separability)
figure(1), set(1,'position',[452 68 560 420])
figure(2), set(2,'position',[16 269 560 420])
%rgb2=rgb2gray(rgb);
c='rgb'; for i=1:3
n=hist(reshape(double(rgb(:,:,i)),[480*640 1]),0.5:256);
line(0:255,n,'color',c(i));
end
axis tight, xlim([0 255]), box on
xlabel intensity, ylabel population, title histograms
% convert image to L*a*b* color space (transform)
cform = makecform('srgb2lab');
lab = applycform(rgb,cform);
% view components (note illumination free)
figure(6)
subplot(2,2,1), subimage(rgb), title('fabric image'), axis off
subplot(2,2,2), subimage(lab(:,:,1)), title('L* layer'), axis off
subplot(2,2,3), map=gray(256); map(:,3)=0; map(:,2)=map(end:-1:1,2);
subimage(lab(:,:,2),map), title('a* layer'), axis off
subplot(2,2,4), map=gray(256); map(:,3)=map(end:-1:1,3); subimage(lab(:,:,3),map), title('b* layer'), axis off
% select polygon region of interest
figure, imshow(rgb), roipoly
% predefined regions for 6 different colors present
load my_regioncoordinates figure(3), imshow(rgb) for i=1:6
patch(roi(:,1,i),roi(:,2,i),'w','linestyle','none')
end
% predefined regions (everything else suppressed)
mask = false([480 640 6]);
for i=1:6
mask(:,:,i) = roipoly(rgb,roi(:,1,i),roi(:,2,i));
end
bw=repmat(logical(sum(mask,3)),[1 1 3]);
im=rgb; im(~bw)=nan;
figure(14), imshow(im)
% color markers (region average values of L*, a* and b*)
l=lab(:,:,1); a=lab(:,:,2); b=lab(:,:,3);
for i = 1:6
cMark(i,1) = mean2(l(mask(:,:,i)));
cMark(i,2) = mean2(a(mask(:,:,i)));
cMark(i,3) = mean2(b(mask(:,:,i)));
end
% classify every pixel using nearest neighbor rule
distance = zeros([480 640 6]);
for i=1:6
dx=double(a)-cMark(i,2); dy=double(b)-cMark(i,3);
distance(:,:,i) = sqrt(dx.^2 + dy.^2);
end
cLabels=0:5; [value,index]=min(distance,[],3);
label=cLabels(index);
% display segmented image
cMap=double(applycform(uint8(cMark),makecform('lab2srgb')))/255;
figure('position',[9 344 1005 334])
subplot(121), subimage(rgb), title('Original Image'), axis off,
subplot(122), subimage(label+1,cMap), title('Segmented Image'), axis off
5 comentarios
Mariam Sheha
el 23 de Jul. de 2013
Mariam Sheha
el 25 de Jul. de 2013
Image Analyst
el 12 de Ag. de 2013
Because you didn't explain what roi you want to use instead.
Walter Roberson
el 12 de Ag. de 2013
Your sample image http://imageshack.us/photo/my-images/189/8sba.jpg/ does not appear to be segmented.
Respuestas (0)
Categorías
Más información sobre ROI-Based Processing en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!