2016-07-14 2 views
0

이것은 K의 샘플 코드로서 알고리즘을 의미합니다.이미지 처리에서 임계 값 적용 방법

k = 5; 
[Centroid,new_cluster]=kmeans_algorithm(inv_trans_img,k); 

    for i_loop = 1:k 
     cluster = zeros(size(inv_trans_img)); 
     pos = find(new_cluster==i_loop); 
     cluster(pos) = new_cluster(pos); 
     figure; imshow(cluster,[]);title('K-means');   
    end 

나는이 K 알고리즘을 의미에서 최종 이미지를 얻을 필요가 나는 process.I 아래처럼 한 임계 화를 위해 해당 이미지를 전달해야합니다.

tumour_image=cluster; 

n = 512; 
binarized_img = zeros(n,n); 
sort_val = sort(tumour_image(:)); 
    mid_val = ceil(length(sort_val)/2); 
    threshold = tumour_image(mid_val); 
    binarized_img(find(tumour_image>=threshold)) = 1; 
    binarized_img(find(tumour_image<threshold)) = 0; 
    imshow(binarized_img);title('binarized image'); 

하지만 이제는 문제가됩니다. 결과적으로 흰색 이미지 만 표시됩니다. 어떻게 해결할 수 있습니까?

답변

1

청구 기준 액은 다음과 같아야합니다

threshold = sort_val(mid_val); 

당신은 정렬 된 값의 평균, tumour_image의 중앙이 아닌 요소를 얻을 필요가있다.

@NeilSlater은 덧글에서 언급했듯이 기존 코드에서 흑백 이미지를 얻는 이유는 우연히 원래 이미지에서 검은 픽셀을 선택한다는 것이므로 임계 값을 지정할 때 전체 이미지가 해당 픽셀의 값보다 크거나 같습니다.

대부분의 픽셀이 0 인 이미지의 경우 결과적으로 여전히 완전 흰색 이미지를 제공합니다. 이것을 둘러싼 한 가지 방법은 현재하고있는 것과 가장 유사하지만 0이 아닌 픽셀의 중앙값을 취하는 것입니다.

또는 관심있는 클러스터를 아는 경우 해당 클러스터 만 유지하면됩니다. 질문에

binarized_image = tumour_image >= 3; % keep clusters 3 and above 
+0

영업 이익의 코드는 기회가 정확히 임계 값 –

+0

@NeilSlater으로 검은 색 픽셀을 집어 아마가 있습니다. 나는 아마 그것을 추가해야한다. 고마워. :) – beaker

+0

답장을 보내 주셔서 감사합니다.하지만 여전히 전과 같은 결과를 얻고 있습니다. – temp