首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

matlab图像边缘检测 背景变全黑

发布网友 发布时间:2022-04-22 08:27

我来回答

2个回答

热心网友 时间:2022-06-18 15:16

图像可否发上来?

你这段是不是从别人的程序粘贴过来的
那程序是使用不同办法求图像边缘,然后比较结果的

而按你的描述你需要的结果,只是想把背景变黑
好像不需要几种求边缘的办法

而且如果只是要背景变黑
那么分出前景背景就可以,不需要提取边缘追问

现在病急乱投医   您知道怎么做吗

追答I = imread('文件名');  %读取图像
G=rgb2gray(I);            %将rgb转为灰度图
G=double(G)/255;          %转为0~1之间表示的灰度图
[x y]=size(G);            %求图像大小
T=(max(G(:))+min(G(:)))/2; %取最大值和最小值中值作为初始阈值
TT=0;                     

allow=0.2;                %允许T和TT的误差
d=abs(T-TT);              
count=0;                  % 记录几次循环
while(d>=allow)           % 迭代最佳阈值分割算法
    count=count+1;
    BW=(G>=T);           %以T为阈值分割
    S0=sum(G(BW));       %计算大于阈值的点数据和
    n0=sum(sum(BW));     %计算大于阈值的点数
    S1=sum(G(~BW));      %计算小于阈值的点数据和
    n1=x*y-n0;           %计算小于阈值的点数
    T0=S0/n0;
    T1=S1/n1;
    TT=(T0+T1)/2;        %计算得到TT
    d=abs(T-TT);         %新的距离
    T=TT;                %新的阈值
end
BW=(G>=T); %最佳阈值分割的二值图像BW
se=strel('square',7); 
BW2=imclose(BW,se); %图像闭算法填充图像中
BW2=uint8(BW2);
Iout=zeros(size(I),'uint8'); %为输出图像分配空间
Iout(:,:,1)=I(:,:,1).*BW2;   %rgb三个通道都根据BW2计算
Iout(:,:,2)=I(:,:,2).*BW2;   %BW2为1的地方保留数据
Iout(:,:,3)=I(:,:,3).*BW2;   %BW2为0的地方变为0,就是全黑
subplot(121),imshow(I);title('原图');
subplot(122),imshow(Iout);title('背景全黑图');


热心网友 时间:2022-06-18 15:16

如果目的是试验边缘检测,那么

图片加噪声以后, 要进行滤波处理才能做边缘检测,甚至做边缘增强

对于这个图,用canny算法效果比较好.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com