Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 均衡多幅图像的对比度和亮度_Image_Matlab_Image Processing_Brightness_Contrast - Fatal编程技术网

Image 均衡多幅图像的对比度和亮度

Image 均衡多幅图像的对比度和亮度,image,matlab,image-processing,brightness,contrast,Image,Matlab,Image Processing,Brightness,Contrast,我有大约160张实验图像。然而,其中一些图像的亮度和对比度与其他图像明显不同。例如,我有如下两张图片: 我想用亮度和对比度来平衡这两幅画(可能在中间找到某种程度,而不是把一个图像等同到另一个图像——虽然这可以让事情变得更容易)。有人对如何进行这项工作有什么建议吗?我不太熟悉Matlab中的图像分析,因此如果出现后续问题,请耐心回答。这里已经有一个问题,但是代码对我来说没有多大意义(因为我缺乏在Matlab中处理图像的经验) 目前,我使用Gimp处理图像,但处理160张图像非常耗时,而且仅凭主

我有大约160张实验图像。然而,其中一些图像的亮度和对比度与其他图像明显不同。例如,我有如下两张图片:

我想用亮度和对比度来平衡这两幅画(可能在中间找到某种程度,而不是把一个图像等同到另一个图像——虽然这可以让事情变得更容易)。有人对如何进行这项工作有什么建议吗?我不太熟悉Matlab中的图像分析,因此如果出现后续问题,请耐心回答。这里已经有一个问题,但是代码对我来说没有多大意义(因为我缺乏在Matlab中处理图像的经验)

目前,我使用Gimp处理图像,但处理160张图像非常耗时,而且仅凭主观的眼睛判断也不太可靠。谢谢大家!

您可以使用执行直方图规范,算法将尽最大努力使目标图像与源图像的强度/直方图分布相匹配。这也叫,

实际上,两幅图像之间的强度分布应该是相同的。如果要使用
histeq
利用此功能,可以指定指定目标直方图的附加参数。因此,输入图像将尝试将自身与目标直方图相匹配。假设您将图像存储在
im1
im2
中,则类似的操作会起作用:

out = histeq(im1, imhist(im2));
但是,更适合使用的版本是。这几乎与调用
histeq
的方式相同,只是不需要手动计算直方图。您只需指定与自身匹配的实际图像:

out = imhistmatch(im1, im2);
下面是一个使用两幅图像的运行示例。请注意,我将选择使用
imhistmatch
。我直接从StackOverflow读取两幅图像,我执行直方图匹配,这样第一幅图像的强度分布与第二幅图像匹配,我们在一个窗口中显示所有结果

im1 = imread('http://i.stack.imgur.com/oaopV.png');
im2 = imread('http://i.stack.imgur.com/4fQPq.png');
out = imhistmatch(im1, im2);
figure;
subplot(1,3,1);
imshow(im1);
subplot(1,3,2);
imshow(im2);
subplot(1,3,3);
imshow(out);
这就是我得到的:

请注意,第一个图像现在在分布上与第二个图像大致匹配

我们也可以翻转它,使第一个图像成为源,我们可以尝试将第二个图像与第一个图像匹配。只需使用
imhistmatch
翻转两个参数即可:

out = imhistmatch(im2, im1);
重复上述代码以显示图形,我得到以下结果:

这看起来有点有趣。我们可以清楚地看到第二幅图像的眼睛形状,一些面部特征更加明显



因此,你最终可以做的是选择一个具有最佳亮度和对比度的好的代表性图像,然后循环其他图像,每次使用此源图像作为参考调用
imhistmatch
,以便其他图像尝试将其强度分布与此源图像匹配。我真的不能为此编写代码,因为我不知道如何在MATLAB中存储这些图像。如果你分享其中一些代码,我很想写更多。

可能会对你有所帮助。我尝试过,但结果因图片而异。反复检查:当你尝试时,是否使用了预设的直方图;具有强度值的等间距料仓的预设计数?“…转换强度图像
I
,以便输出强度图像
J
的直方图与
长度(hgram)
箱大致匹配
hgram
”。dfri,我没有使用预设的直方图。对不起,这似乎是个很基本的问题,但你介意告诉我怎么做吗?不,我没有。但是我的一个同事最近在做这个。我会和她核实一下她是怎么做到的。雷琳,非常感谢你的帮助!这当然解决了部分问题,但图像质量似乎确实受到了影响。我还发现了一个潜在的解决方案:如果这可行,我将在这里发布。