-1

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

4

2 回答 2

1

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

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

于 2013-08-28T09:00:36.593 回答
1

我建议您使用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”函数导入自己的图像,而不是生成随机图像(参见代码的第一行)。

于 2013-08-28T09:54:37.877 回答