首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中提高图像对比度

在MATLAB中提高图像对比度
EN

Stack Overflow用户
提问于 2011-08-02 11:32:25
回答 4查看 18.8K关注 0票数 3

我有一个灰度图像,它的像素值从1.000到1.003。

我想增加不同像素之间的对比度。我已经在imtool下尝试过imcontrast,但我在视觉上没有看到任何改进。

也许一个想法是增加>1.000的像素值。例如,如果我能将1.001映射到10,1.002映射到20等等,那就太好了,这会增加对比度吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-02 11:34:55

试一试

代码语言:javascript
复制
newRange = 1.0;  %// choose the new maximum. (new minimum always at 0.0)
imgMin = double(min(image(:)));
imgMax = double(max(image(:)));
image = (image - imgMin) / (imgMax - imgMin) * newRange;

然后,您仍然需要注意图像可能是空白的(这将导致除以零的问题)。

如果要放大的理想范围不是真正的最小值或最大值,则可以手动设置imgMinimgMax值。

票数 11
EN

Stack Overflow用户

发布于 2014-08-08 13:49:40

我意识到这并不是这里要问的问题,但这个问题的标题可能会让其他人,比如我,来这里寻找一种方法来(非破坏性地)增加图像的对比度,即使在归一化之后-类似于人们可以通过将图像设置为sigmoid形状来处理Photoshop中的曲线功能:

要做到这一点,一个简单的方法(假设我们有一个在[0,1]范围内归一化的图像,例如在通过MATLAB的mat2gray函数之后)是使用余弦函数。方法如下:我们首先反映余弦曲线,使其最低点在零,最高点在π上,而不是相反;然后我们用π缩放输入,这样最高点出现在输入具有最大值1时;最后,我们通过添加1并除以2,将结果归一化到输出范围[0,1] (从余弦的原始[-1,1]开始)。结果是以下简单的公式:

代码语言:javascript
复制
img_contrast = ( -cos( pi * mat2gray( img_original ) ) + 1 ) / 2;

希望这能有所帮助!

票数 5
EN

Stack Overflow用户

发布于 2011-08-02 11:35:21

如果您想要做的只是以更高的对比度显示图像,那么您可以使用imagesc,它将图像数据缩放到当前色彩映射表的整个范围并显示图像。

如果你真的想要调整图像的范围,你可以通过减去最小值并除以可用的范围来标准化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6906969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档