Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MATLAB将静脉保持为黑色?_Matlab_Image Processing_Image Segmentation_Threshold - Fatal编程技术网

如何使用MATLAB将静脉保持为黑色?

如何使用MATLAB将静脉保持为黑色?,matlab,image-processing,image-segmentation,threshold,Matlab,Image Processing,Image Segmentation,Threshold,我有一张红外图像,它捕捉到了皮肤下的静脉。我想处理这张图像,以便只保留黑色的血管,而其他的都是白色。然后我想生成坐标像素作为这些黑色像素,这将是静脉 这就是我到目前为止所做的: a=imread('11.jpg'); figure(1),imshow(a); title('original image'); cform = makecform('srgb2lab'); for ii = 1:3 a(:,:,ii) = medfilt2(a(:,:,ii),[5 5]); end lab

我有一张红外图像,它捕捉到了皮肤下的静脉。我想处理这张图像,以便只保留黑色的血管,而其他的都是白色。然后我想生成坐标像素作为这些黑色像素,这将是静脉

这就是我到目前为止所做的:

a=imread('11.jpg');
figure(1),imshow(a);
title('original image');
cform = makecform('srgb2lab');
for ii = 1:3
    a(:,:,ii) = medfilt2(a(:,:,ii),[5 5]);
end
lab = applycform(a,cform); 
figure(2),imshow(lab);
title('ímage in color space after filtering');
b=lab(:,:,1);
c=im2bw(b,0.2);
figure(3),imshow(c);
title('b&white boundry of fist');
neg=1-c;
figure(4),imshow(neg);
color=a;
r=color(:,:,1);
r(~c)= 0;
g = color(:,:,2);
g(~c)= 0;
b = color(:,:,3);
b(~c)= 0;
% Concatenate in the "3rd dimension" to re-constitute an RGB image.
color = cat(3,r,g,b);
figure(5),
imshow(color);
title('reconstructed fist with black bg');
gray=rgb2gray(color);
figure(6);
imshow(gray);
title('grayscale of fist');

i1=imresize(gray,[256 256],'bilinear');
figure(7);
imshow(i1);
title('Resized Image of grayscale');

figure(8),imhist(i1);
title('histogram of resized grayscale');
i2=histeq(i1,256);
figure(9),imshow(i2);
title('histogram equalisatio');
figure(10),imhist(i2);
title('équalised histogram');
e=medfilt2(i2,[5 5]);
figure(7),imshow(e);
f=medfilt2(e,[5 5]);
figure(8),imshow(f);
g=medfilt2(f,[5 5]);
figure(9),imshow(g);
s=g;
figure(10),imshow(s);
l=imresize(s,[200 200]);
figure(11);
imshow(l);

[h,u]=size(l);
smth=double(l);
wl=1.5;
we=3;
wt=15;
eline=smth;;
[grady,gradx]=gradient(smth);
eedge=-1*sqrt((gradx.*gradx+grady.*grady));
figure(12);
imshow(uint8(-eedge));
m1=[-1 1];
m2=[-1;1];
m3=[1 -2 1];
m4=[1;-2;1];
m5=[1 -1;-1 1];
cx=conv2(smth,m1,'same');
cy=conv2(smth,m2,'same');
cxx=conv2(smth,m3,'same');
cyy=conv2(smth,m4,'same');
cxy=conv2(smth,m5,'same');
for i=1:h
    for j=1:u
        eterm(i,j)=(cyy(i,j)*cx(i,j)*cx(i,j)-2*cxy(i,j)*cx(i,j)*cy(i,j)+cxx(i,j)*cy(i,j)*cy(i,j))/((1+cx(i,j)*cx(i,j)+cy(i,j)*cy(i,j))^1.5);
    end
end
figure(13);
imshow(uint8(-eterm));
eext=(wl*eline+we*eedge+wt*eterm);
figure(14);
imshow(uint8(eext));
eext=(wl*eline+we*eedge);
figure(15);
imshow(uint8(eext));
whos eext;
这是图像:

那么,在这之后,我该如何处理,使静脉保持黑色,其他一切保持白色


这是经过中值滤波后的图像,你可以看到纹理很暗。因此,我如何从这里开始,使静脉保持黑色,其他一切保持白色?

一旦你有了第二张图像,你需要对它进行处理,以得到你想要的。您可以自己实现它,也可以使用matlab(需要图像处理工具箱)。

获得第二幅图像后,您需要对其执行操作,以获得所需的内容。您可以自己实现,也可以使用matlab(需要图像处理工具箱)。

我不知道为什么我的代码会这样。我在不同的行中发布了每一条,但它在这里只是一个连续的东西:(@khadeejah:欢迎使用StackOverflow。要正确缩进代码,您需要在开头插入4个空格,或者阻止选择文本并单击大括号
{}
在编辑窗口中。这将正确缩进代码。以后,请不要将图像链接到个人博客,因为我们希望将其记录在此处。否则,如果您删除您的博客文章,则该文章将没有上下文。我知道您没有代表使用该网站上载图像,因此我已为您完成了此操作。但请记住,我在n未来。第二,你发布的是一堵巨大的代码墙。这不是租一个编码器。虽然我们非常愿意帮助你,并为你指出正确的方向,但我们肯定没有时间剖析你的代码。因此,我建议修剪你的代码(首先,你可以删除所有标题、标签等)把它的体积缩小到一个小的集合来描述你所遇到的问题。第三,你已经给了我们你所做的事情的代码。但是你没有告诉我们你已经走了多远…你能把静脉分开吗?它是红色的而不是黑色的,还是你得到的静脉比原来的多?我们不知道。那么,告诉我们far您得到的是一种更具描述性的方式(可能是图像)问一个有针对性的问题将帮助你获得更好更快的回复。另外,因为你在另一个问题中提到这是一个项目,我已经将其标记为家庭作业。谢谢@yoda让我的代码变得正确,并添加了图片。不,我永远不会删除那篇博客文章……别担心:D!我不知道我的代码为什么会这样。我在不同的行中发布了每一条,但它在这里只是一个连续的东西:(@khadeejah:欢迎使用StackOverflow。要正确缩进代码,您需要在开头插入4个空格,或者阻止选择文本并单击大括号
{}
在编辑窗口中。这将正确缩进代码。以后,请不要将图像链接到个人博客,因为我们希望将其记录在此处。否则,如果您删除您的博客文章,则该文章将没有上下文。我知道您没有代表使用该网站上载图像,因此我已为您完成了此操作。但请记住,我在n未来。第二,你发布的是一堵巨大的代码墙。这不是租一个编码器。虽然我们非常愿意帮助你,并为你指出正确的方向,但我们肯定没有时间剖析你的代码。因此,我建议修剪你的代码(首先,你可以删除所有标题、标签等)把它的体积缩小到一个小的集合来描述你所遇到的问题。第三,你已经给了我们你所做的事情的代码。但是你没有告诉我们你已经走了多远…你能把静脉分开吗?它是红色的而不是黑色的,还是你得到的静脉比原来的多?我们不知道。那么,告诉我们far您得到的是一种更具描述性的方式(可能是图像)问一个有针对性的问题有助于你获得更好更快的回复。另外,因为你在另一个问题中提到这是一个项目,我已经将其标记为家庭作业。谢谢@yoda让我的代码正常,并添加了图片。不,我永远不会删除那篇博文…别担心:D!oki@Pavan我会尝试一下,并获得abk to尽快回复您。:t非常感谢您的回复@Pavan我将尝试此方法并尽快将abk发送给您。:t非常感谢您的回复