matla阈值怎么锻炼提高射精阈值自己手动设置

&&&&&白平衡是图像处理的一个极重要概念。所谓白平衡(英文名称为White Balance),就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,作为拍摄设备,如数码相机,可没有人眼的适应性,在不同的光线下,由于CCD输出的不平衡性,造成数码相机彩色还原失真。一般情况下,我们习惯性地认为太阳光是白色的,已知直射日光的色温是5200K左右,白炽灯的色温是3000K左右。用传统相机的日光片拍摄时,白炽灯光由于色温太低,所以偏黄偏红。所以通常现场光线的色温低于相机设定的色温时,往往偏黄偏红,现场光线的色温高于相机设定时,就会偏蓝。
&&&&&为了解决不同色温下,引起的白色漂移现象。由于白色对色温变化的响应最大,通常用白色来作为调整的基色。通常的白平衡技术有:自动白平衡、钨光白平衡、荧光白平衡、室内白平衡、手动调节。本文仅介绍其中的一种自动白平衡。
&&&& 白平衡算法通常分为两步:白色点的检测,白色点的调整。本方法采用一个动态的阀值来检测白色点。详细算法过程为:
&&&&&&&&&&1.& 把图像w*h从RGB空间转换到YCrCb空间。
&&&&&&&&&&2.& 选择参考白色点:
&&&&&&&&&&&&&&&&&&&&a. 把图像分成3*4个块(块数可选)。
&&&&&&&&&&&&&&&&&&&&b. 对每个块,分别计算Cr,Cb的平均值Mr,Mb。
&&&&&&&&&&&&&&&&&&&&c. 对每个块,根据Mr,Mb,分别计算Cr,Cb的方差Dr,Db。
&&&&&&&&&&&&&&&&&&&&d. 判定每个块的近白区域(near-white region)。
&&&&&&&&&&&&&&&&&&&&&&&&判别表达式为:Cb(i, j) & (Mb + Db & sign(Mb )) & 1.5& Db&&&&Cr(i, j) & (1.5&Mr + Dr & sign(Mr )) & 1.5& Dr
&&&&&&&&&&&&&&&&&&&&&& 设一个&参考白色点&的亮度矩阵RL,大小为w*h。
&&&&&&&&&&&&&&&&&&&&&&&&&若符合判别式,则作为&参考白色点&,并把该点(i,j)的亮度(Y分量)值赋给RL(i,j);
&&&&&&&&&&&&&&&&&&&&&&&&&若不符合,则该点的RL(i,j)值为0。
&&&&&&&&&3.& 选取参考&参考白色点&中最大的10%的亮度(Y分量)值,并选取其中的最小值Lu_min.
&&&&&&&&&4.& 调整RL,若RL(i,j)&Lu_min,& RL(i,j)=0; 否则,RL(i,j)=1;
&&&&&&&&&5.& 分别把R,G,B与RL相乘,得到R2,G2,B2。&&分别计算R2,G2,B2的平均值,Rav,Gav,Bav;
&&&&&&&&&6.& 得到调整增益:& Ymax=double(max(max(Y)))/15;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Rgain=Ymax/R&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Ggain=Ymax/G&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Bgain=Ymax/B
&&&&&&& 7.& 调整原图像:Ro= R*R Go= G*G Bo= B*B
代码如下:
1 function autoWhiteBalanceTest
6 im=imread('13.jpg');
8 im1=rgb2ycbcr(im);%将图片的RGB值转换成YCbCr值%
9 Lu=im1(:,:,1);
10 Cb=im1(:,:,2);
11 Cr=im1(:,:,3);
12 [x y z]=size(im);
13 tst=zeros(x,y);
15 %计算Cb、Cr的均值Mb、Mr%
16 Mb=mean(mean(Cb));
17 Mr=mean(mean(Cr));
19 %计算Cb、Cr的均方差%
20 Db=sum(sum(Cb-Mb))/(x*y);
21 Dr=sum(sum(Cr-Mr))/(x*y);
23 %根据阀值的要求提取出near-white区域的像素点%
25 for i=1:x
b1=Cb(i,j)-(Mb+Db*sign(Mb));
b2=Cr(i,j)-(1.5*Mr+Dr*sign(Mr));
if (b1&abs(1.5*Db) & b2&abs(1.5*Dr))
Ciny(cnt)=Lu(i,j);
tst(i,j)=Lu(i,j);
cnt=cnt+1;
36 cnt=cnt-1;
37 iy=sort(Ciny,'descend');%将提取出的像素点从亮度值大的点到小的点依次排列%
38 nn=round(cnt/10);
39 Ciny2(1:nn)=iy(1:nn);%提取出near-white区域中10%的亮度值较大的像素点做参考白点%
41 %提取出参考白点的RGB三信道的值%
42 mn=min(Ciny2);
43 for i=1:x
if tst(i,j)&mn
tst(i,j)=0;
tst(i,j)=1;
53 R=im(:,:,1);
54 G=im(:,:,2);
55 B=im(:,:,3);
56 R=double(R).*
57 G=double(G).*
58 B=double(B).*
60 %计算参考白点的RGB的均值%
61 Rav=mean(mean(R));
62 Gav=mean(mean(G));
63 Bav=mean(mean(B));
64 Ymax=double(max(max(Lu)))/15;%计算出图片的亮度的最大值%
66 %计算出RGB三信道的增益%
67 Rgain=Ymax/R
68 Ggain=Ymax/G
69 Bgain=Ymax/B
71 %通过增益调整图片的RGB三信道%
72 im(:,:,1)=im(:,:,1)*R
73 im(:,:,2)=im(:,:,2)*G
74 im(:,:,3)=im(:,:,3)*B
76 %显示图片%
77 figure,imshow(im2),title('原图');
78 figure,imshow(im),title('白平衡后的效果图');
参考地址:/haar/articles/1392227.html&
     /tiandsp/archive//2477897.html
阅读(...) 评论()[转载]matlab中graythresh函数详解
Matlab函数graythresh简介
  函数功能:使用找到图片的一个合适的阈值(threshold)。在使用函数将灰度图像转换为二值图像时,
需要设定一个阈值。 这个函数可以帮助我们获得一个合适的阈值, 利用这个阈值通常比人为设定的阈值能更好地把一张灰度图像转换为二值图像。
  调用格式:
  level = graythresh(I)
  通过计算获得输入图像的阈值, 这个阈值在[0, 1]范围内。 该阈值可以传递给im2bw完成灰度图像转换为二值图像的操作。
  graythresh使用最大类间方差法来获得一个阈值。
  最大类间方差法是由日本学者大津(Nobuyuki
Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。
  [level EM] = graythresh(I)
  相关函数: im2bw
  程序示例
  imggray = ('cell.bmp');
  (221);
(imggray);
title('原始图像');
  imgbw = im2bw(imggray);
  subplot(222); imshow(imgbw); title( '使用默认阈值0.5');
  imgbw = im2bw(imggray, 0.25);
  subplot(223); imshow(imgbw); title( '指定阈值为0.25');
  level = graythresh(imggray);
imgbw = im2bw(imggray,level);
  subplot(224); imshow(imgbw); title('使用最大类间方差法(Otsu)获得阈值');
  由此可见, 如果不使用graythresh函数来获得阈值, 可能需要多次尝试才能获得一个合适的阈值。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 2791|回复: 2|关注: 0
图像缺陷的视觉检测(请问阈值设置)
<h1 style="color:# 麦片财富积分
新手, 积分 7, 距离下一级还需 43 积分
我用的是Canny算法对一个具有缺陷的图像进行检测,目的是为了把缺陷的形状大小突出表现出来。主要步骤如下:
1、用Canny算法确定图像中边缘的像素级位置;2、构造用于平滑处理的高斯函数;3、将图像平滑,再求对x,y的偏微分及每个像素的模值;4、求模值的局部极大值,分两步进行,首先求像素梯度方向角的正切值,然后沿梯度的方向(归纳为4个方向)确定相邻两像素,并找出局部极大值;5、把图像自适应分块,根据每一块的情况设定合适的阈值;6、设定阈值,低于阈值的模局部极大值被认为是噪声,高于阈值的保持不变;7、对梯度模局部极大值进行阈值处理,若大于阈值就将其判为边缘点;8、将得到的边缘图像输出。
这里面分块我是按照图像的缺陷从左到右平均分成四块,把缺陷孤立在第一块(参考图像),但是具体的阈值不知道怎么去设置才好,那么多的方法可以用,但是我都不熟悉,更谈不上选择了,但是时间又比较紧,有没有人可以推荐一下啊?谢谢!
论坛优秀回答者
<h1 style="color:#75 麦片财富积分
关注者: 308
|此回复为最佳答案
阈值你可以设置为0-255之间的任何一个数,然后看结果是否满足
基本上只能尝试,没有什么通用的方法
<h1 style="color:# 麦片财富积分
关注者: 1
我也在做轴承缺陷检测,不介意的话,可以交流一下
站长推荐 /2
机器视觉和人工智能在医疗设备中的应用及实现
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区

我要回帖

更多关于 ps阈值怎么用 的文章

 

随机推荐