声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1377|回复: 6

[图像处理] 怎么对彩色图进行阈值选择

[复制链接]
发表于 2007-7-20 14:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
对黑白图象进行阈值可以将图象用明显的二值表现出来,但怎么对彩色图象进行阈值选择呢?
例如 图象中有红蓝等颜色,阈值选择表现出红色或蓝色怎么实现??


I=imread('001.jpg');
I1=rgb2gray(I);
th=thresh_md(I1);
bb=zeros(size(I1));
bb(find(I1)>th)=1;
bb(find(I1<=th))=0;
imshow(bb)


thesh_md.m
function th=thresh_md(a);
%该函数实现最大方差法计算分割门限
%输入参数为灰度图像,输出为灰度分割门限                 
count=imhist(a);
%返回图像矩阵a的各个灰度等级象素个数     
[m,n]=size(a);
N=m*n-sum(sum(find(a==0),1));
L=256;   
%计算出现概率不为0的最小灰度            
count=count/N;
for i=2:L
  if count(i)~=0
    st=i-1;
    break;
  end
end
%计算出现概率不为0的最大灰度
for i=L:-1:1
  if count(i)~=0;
    nd=i-1;
    break;
  end
end
f=count(st+1:nd+1);
%p和q分别为灰度起始和结束值
p=st;q=nd-st;
u=0;
for i=1:q;
  u=u+f(i)*(p+i-1);
  ua(i)=u;
end
%计算出选择不同k值时,A区域的概率
for i=1:q;
  w(i)=sum(f(1:i));
end
%求出不同k值时类间的方差
d=(u*w-ua).^2./(w.*(1-w));
%求出最大方差对应的灰度级
[y,tp]=max(d);
th=tp+p;
回复
分享到:

使用道具 举报

发表于 2007-7-20 14:50 | 显示全部楼层
看这个:http://forum.vibunion.com/forum/thread-41583-1-1.html 3楼

[ 本帖最后由 ChaChing 于 2010-5-15 19:33 编辑 ]
 楼主| 发表于 2007-7-20 16:31 | 显示全部楼层
BB(C,1) = 0;
BB(C,2) = 0;

什么意思,不太懂.
(0,0,255)是蓝色的
(255,0,0)是红色的
为什么我提取后的图形都是蓝色的??
1.jpg
发表于 2007-7-20 16:37 | 显示全部楼层
那个问题是关于提取图象中蓝色部分像素的,所以得到的图形当然是蓝色部分。我让你参考一下而已,并非生搬硬套,仔细阅读那个代码,然后启发一下就可以了

[ 本帖最后由 ChaChing 于 2010-5-15 19:34 编辑 ]
 楼主| 发表于 2007-7-20 16:41 | 显示全部楼层
楼上老大能不能详细说下每条语句的意思,help 不太懂,英语水平较差:@L
发表于 2007-7-20 17:01 | 显示全部楼层

回复 #5 子非鱼 的帖子

呵呵,不好可以查字典。是在嫌麻烦就单步运行,每运行完看一下结果,了解其处理的过程(针对小图像)
发表于 2010-5-15 10:29 | 显示全部楼层

我也做这方面的,在一副彩图里找到红球,怎么实现啊,请高手指点
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-8 11:53 , Processed in 0.065384 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表