【问题标题】:how to cluster same colour in an image [closed]如何在图像中聚类相同的颜色[关闭]
【发布时间】:2013-08-28 08:38:27
【问题描述】:

我有一张灰度图像,想找到特定颜色(例如黑色)更密集的区域。由于这个问题是一个更大项目的一部分,我需要用 java 对其进行编程,但我没有找到合适的算法。

【问题讨论】:

  • 如果您想要 java 答案,请添加 java 标签。图片是什么格式的?它在一个文件中吗?你知道如何用 Java 读取文件吗?您是否尝试过编写任何代码?如果有,是什么?
  • 如果您从图像处理开始,我真的建议您开始在 Matlab 中编写代码,然后跳转到另一种语言(在您的情况下为 java)
  • 您想要对图像进行更粗略的量化吗?还是基于灰度级的图像分割?如果要基于颜色相似性进行分割,则应检查均值偏移分割。见stackoverflow.com/questions/4831813/…
  • 我将图像视为 2D 数组,因此我有 0-255 个数值,在这种情况下,我想找到值为 0 的数组的所有组。

标签: java image colors grouping


【解决方案1】:

您应该使用 K-Means 来查找图像中的集群。例如,您的数据集应该是 位置 X、Y、Z 和灰度值。

然后针对 k 的多个值运行算法。并使用 BIC 分数找到最佳集群配置。

【讨论】:

  • 因为我在这个领域还很年轻,你能建议我做一个程序或代码示例吗?
【解决方案2】:

我建议您使用 Matlab 来迈出图像处理的第一步。我编写了一个生成伪随机图像的简单函数,然后我将只考虑值超过阈值的像素。其余像素将设置为零。这是代码:

image=randi([0 255],10); %Used to generate a 10x10 image with pixel values between [0-255]

[row,col]=size(image); % to calculate the size of the image;
image_output=zeros([row,col]); %We make an empty image with the same size than the origial

TH_value=100; %threshold value 

index=find(image>TH_value); %searching for all the pixels with value>TH_value
n_idx=length(index); %number of pixels over TH_value

%no we have to replace in our empty new matrix only those pixels that have a value over the TH_value
for i=1:n_idx
    [row, col, ~ ] = ind2sub(size(image), index(i)); %geting the coordinates for all values over TH_value
    image_output(row,col)=image(row,col); %copying to the output matrix only the pixels over TH_value
end
image_output %in order to visualize the output image

将上面的代码粘贴到 Matlab 中,看看它是如何工作的。这很简单,但作为一个开始就可以了。您应该使用“imread”函数导入自己的图像,而不是生成随机图像(参见代码的第一行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2018-11-30
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多