matlab计算图像对比度

I=b16reader_luo('H:\激光散斑\图像处理\hene\egg_5.b16');%读取b16格式的图片N=307200;sum1=0;sum2=0;forx... I=b16reader_luo('H:\激光散斑\图像处理\he ne\egg_5.b16'); %读取b16格式的图片
N=307200;
sum1=0;
sum2=0;
for x=1:480
for y=1:640
sum1=sum1+I(x,y).^2;
sum2=sum2+I(x,y);
end
end
sum1=im2double(sum1);
sum2=im2double(sum2);
V=(N./sum2).*sqrt(sum1./N-(sum2./N).^2) %V为对比度

上面是根据公式

计算的对比度,但是我算的不同图片的V都是同一个值。。
请教各位上面代码哪里有错啊??万分感谢~
展开
 我来答
jimtien
推荐于2017-09-29 · TA获得超过7647个赞
知道大有可为答主
回答量:2146
采纳率:88%
帮助的人:1006万
展开全部

一般地, 计算中心像素灰度值与周围4或8近邻像素灰度值之差的平方之和,除以以上平方项的个数


[m,n] = size(I);
g = padarray(I,[1 1],'symmetric','both');%对原始图像进行扩展,比如50*50的图像,扩[r,c] = size(g);

cg = double(g);

k = 0;  

for i=2:r-1
    for j=2:c-1
        k = k+(g(i,j-1)-g(i,j))^2+(g(i-1,j)-g(i,j))^2+(g(i,j+1)-g(i,j))^2+(g(i+1,j)-g(i,j))^2;   

    end

end
cg = k/(4*(m-2)*(n-2)+3*(2*(m-2)+2*(n-2))+4*2); %求原始图像对比度   


WM_THU
2013-11-03 · TA获得超过7160个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3695万
展开全部
试试读入图片后先im2double,再进行计算,否则很容易溢出。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式