wangkp 发表于 2009-6-1 18:05

请教 图像分割程序

我用分水岭法做图像分割出现这个问题请高手指点,以下是程序和错误

afm = imread('12345.tif');
figure, imshow(afm);
se = strel('disk', 15);
Itop = imtophat(afm, se); % 高帽变换
Ibot = imbothat(afm, se); % 低帽变换
figure, imshow(Itop, []);   % 高帽变换,体现原始图像的灰度峰值
figure, imshow(Ibot, []);   % 低帽变换,体现原始图像的灰度谷值
Ienhance = imsubtract(imadd(Itop, afm), Ibot);% 高帽图像与低帽图像相减,增强图像
figure, imshow(Ienhance);
Iec = imcomplement(Ienhance); % 进一步增强图像
Iemin = imextendedmin(Iec, 20);
figure,imshow(Iemin) % 搜索Iec中的谷值
Iimpose = imimposemin(Iec, Iemin);
wat = watershed(Iimpose); % 分水岭分割
rgb = label2rgb(wat);
figure, imshow(rgb); % 用不同的颜色表示分割出的不同区域


??? Error using ==> image
TrueColor CData contains element out of range 0.0 <= value <= 1.0.
Error in ==> C:\MATLAB6p5\toolbox\images\images\imshow.m
On line 104==> hh = image(xdata, ydata, cdata, 'BusyAction', 'cancel', ...
Error in ==> C:\MATLAB6p5\work\water3.m
On line 17==> figure, imshow(wat); % 用不同的颜色表示分割出的不同区域
>>

xiezhh 发表于 2009-6-2 06:43

如果你的图像是真彩图像,只需要在afm = imread('ct162.jpg'); 后加上
afm=rgb2gray(afm);
即可,另外Iec = imcomplement(Ienhance); 的作用并不是进一步增强图像,而是反色图像吧。
我试了一下这段代码,分割效果并不好。

wangkp 发表于 2009-6-2 08:35

谢谢您

谢谢您的答复,:handshake 。这个分水岭算法对真彩色图像的分割效果确实不好,您那里有效果好点的分割算法吗?再次感谢您。

xiezhh 发表于 2009-6-2 10:30

很遗憾我目前对图像分割还没做深入的研究,也没有什么好的算法。
页: [1]
查看完整版本: 请教 图像分割程序