- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 Java 中对灰度图像进行直方图均衡。描述如下:使用每个像素的 RGB 的一个波段作为查找表的索引来迭代图像,以确定图像的新像素值。将每个像素的RGB设置为新像素值对应的RGB。
实现这个我得到一个蓝色的图像:
[已删除]
(预期结果)
[已删除]
这是我到目前为止的代码:
private void histogramEqualize(BufferedImage im, int[] lut) {
for (int x = 0; x < im.getWidth(); x++) {
for (int y = 0; y < im.getHeight(); y++) {
Color c = new Color(im.getRGB(x, y));
Color eq = new Color(lut[c.getRed()], c.getGreen(), c.getBlue());
im1.setRGB(x, y, eq.getRGB());
}
}
}
public int[] getLookupTable(int[] h, int n) {
// h: Histogram for im1 in either the red band or luminance.
lut = new int[256];
double sf = 255/n;
int sumH = 0;
int sk = 0;
for(int i=0; i<h.length; i++) {
sumH += h[i];
sk = (int)(sf*sumH);
lut[i] = sk;
}
return lut;
}
我还尝试将 Color eq = new Color(lut[c.getRed()], c.getGreen(), c.getBlue());
更改为 Color eq = new Color(lut[c.getRed()], lut[c.getGreen()], lut[c.getBlue()]);
但这导致了黑色图像。
最佳答案
您提到您想要在灰度图像上应用直方图均衡化,但您正在使用像素的 RGB 颜色值。
对于灰度图像,您可以仅标准化图像中的灰度级别以进行直方图均衡,如下所示:
1)迭代每个灰度级像素值,并通过计算每个灰度级在图像中出现的次数来生成每个灰度级的直方图数据。
2)求上述直方图的累积分布。
3) 迭代原始图像中的每个灰度像素值,并使用以下公式将其值替换为其相应的归一化值。
where L=255, that is total gray scale levels,
M = Image height,
N = Image width,
MxN to get total number of pixels in image.
cdfmin = min value of cumulative distribution data in step 2.
这将为您提供新的标准化图像矩阵。
如果您想在 RGB 图像上应用直方图均衡,则需要将 RGB 颜色空间转换为 HSV 颜色空间,并在值 channel 上应用与灰度图像相同的步骤,而不更改其色调和饱和度值。
关于java - 使用查找表对图像进行直方图均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945687/
如何检查枚举是否等于可能情况之一。有没有比以下更好的解决方案: [.orderedAscending, .orderedSame].contains(Calendar.current.compare(
我正在尝试使用 openCV 和 C++ 来均衡 HSV 图像的直方图。我知道有些带有 openCV 的库可以为我执行此操作,但我想手动尝试以了解该方法。 我假设均衡将在 HSV 图像的 V chan
我有一个包含多个列的表格。这些列可以包含不同大小的内容,因此高度会有所不同。 我想做的是调整单个元素的高度,使它看起来像这样: . .table { display: flex; ba
:) 我有一个小问题: 我有一个 div,在里面有两个 div,一个挨着另一个。左边的一个在调整大小时改变其高度以保持其与宽度的关系,我希望右边的一个与左边的高度相同;我在文档末尾的 jQuery 中
我正在尝试在 YAML 中创建三列布局。我正在使用此框架的网格功能来定位列(导航、内容、侧边栏)。 我的问题:如何将所有三个 div 的高度设置为相同的大小。 YAML 应该提供 ym-equaliz
这个问题在这里已经有了答案: How do I keep two side-by-side div elements the same height? (24 个答案) 关闭 5 年前。 有没有一种
好像我的 JavaScript 没有听我的。我只是想将所有 anchor 的高度设置为等于这些 anchor 的最高高度。 HTML {{products.title}}
我想对同一主题的两个半脸彩色图像进行均衡,然后将它们合并。它们每个都有不同的色调饱和度和亮度值....使用 opencv 我如何标准化/均衡每个半图像? 我尝试执行 cvEqualizeHist(v,
当一个div高度很大时,我想等于两个div的高度 例子: B ACD Div 2 的高度大于 div 1 最佳答案 我可能有一个可能的解决方案: http://jsfiddle.net/adaz/w
我正在尝试做类似的事情(我已经删除了不必要的东西) Models.Parent.findAll({ where: { parent_id: {
我在 node 中使用 typescript,它在开发模式下运行良好,通过使用以下命令运行我的 index.ts 和 ts-node。 ts-node src/index.ts 但是当我将 types
我是一名优秀的程序员,十分优秀!