matlab中使用imhist函数查看直方图有问题

问题描述:

matlab中使用imhist函数查看直方图有问题


两幅对比度不同的灰度图,为什么直方图一样?
附上Matlab程序:
clc;

clear all;
close all;

 
[f1,map] = imread('D:\Matlab\ceshi.bmp');

figure(1);
subplot(2,1,1);
imshow(f1,map);
title('原图像');
subplot(2,1,2);
imhist(f1,map);
axis on;
title('直方图');

 
[f2,map1] = imread('D:\Matlab\ceshi100.bmp');

figure(2);
subplot(2,1,1);
imshow(f2,map1);
title('修改图像');
subplot(2,1,2);
imhist(f2,map1);
axis on;
title('直方图');
 
 
1个回答 分类:综合 2014-10-01

问题解答:

我来补答
从你的两张图上真看不出太大的差别来,视觉有时会欺骗人的.
另外,你看到直方图挺像,其实也未必一样.
再问: 第一张图是用PS的对比度增加100之后的,在PS上显示的直方图正常
再答: 你直接把两个原始的bmp图片贴出来我看看。现在贴的jpg图像,属于有损格式,是否有差别不好对照。 我自己做了个灰度图,用ps调整对比度增加100,用你的程序画出图来,看着并不一样。
再问: 第一个是原图,第二个是对比度加了100的图,第一的图片都是0-255级灰度,没每一级灰度有256个像素点
再答: 原因: 两个图使用的 Colormap 不同(都是灰色,看起来不明显),在各自的colormap下,直方图基本一致,也就是说,f1和f2几乎相同(仅最后一行不同)。 你可以在后面加上以下两句: I2=ind2gray(f2,map1); imhist(I2) 使用相同的colormap,就能看出差别了。
再问: 能不能给个完整的代码呢
再答: 没有什么更完整的代码,就是在你原来的代码后面加上两行。 如果非要贴出来的话也可以(注意:我的目录名和你不同): clc; clear all; close all; [f1,map] = imread('D:\MATLAB6p5\ceshi.bmp'); figure(1); subplot(2,1,1); imshow(f1,map); title('原图像'); subplot(2,1,2); imhist(f1,map); axis on; title('直方图'); [f2,map1] = imread('D:\MATLAB6p5\ceshi100.bmp'); figure(2); subplot(2,1,1); imshow(f2,map1); title('修改图像'); subplot(2,1,2); imhist(f2,map1); axis on; title('直方图'); I2=ind2gray(f2,map1); imhist(I2)
 
 
展开全文阅读
剩余:2000
下一页:fx的解析式
也许感兴趣的知识