В настоящее время я реализую сегментацию изображений в MATLAB. У меня есть две реализации.
- Изображение разделено на две области - передний план и задний план.
- Изображение сегментировано более чем на две области - предположим, 3 или 4 сегментированных области.
Я пытаюсь вычислить меру сходства между сегментированным изображением и истинным фактом (вручную сегментированными изображениями) с помощью коэффициента кубика или индекса Жаккара. Это хорошо работает для сегментированных изображений, которые были разделены на две области. Это реализуется с помощью следующего кода.
dice = 2*nnz(segIm&grndTruth)/(nnz(segIm) + nnz(grndTruth))
Ожидается, что segIm и grndTruth будут одного размера. Они также должны быть числовыми или логическими.
Однако мне не удалось найти способ применить эту меру для сравнения сходства для многорегиональных сегментированных изображений. Может ли кто-нибудь сказать мне, как я могу использовать коэффициент кубика в моем приложении?
РЕДАКТИРОВАТЬ: Что касается предложений nkjt, я выполнил базовую реализацию и даю результаты ниже. Пожалуйста, не стесняйтесь обновлять код для большей точности.
Я рассматриваю два изображения в виде двух матриц. A - сегментированное изображение, а B - ручная основа. Код Matlab для предложенной выше реализации приведен ниже. Пожалуйста, проверьте и поделитесь своими мыслями.
A=[1 2 3 4;1 2 3 4;1 2 3 4;1 2 3 4]
B=[1 3 4 4;1 1 3 4;1 2 3 4;1 2 3 1]
%//First Suggestion
dice = 2*nnz(A==B)/(nnz(A) + nnz(B))
%//2nd Suggestion
A1=(A==1);B1=(B==1);
A2=(A==2);B2=(B==2);
A3=(A==3);B3=(B==3);
A4=(A==4);B4=(B==4);
dice = (2*nnz(A1&B1)/(nnz(A1) + nnz(B1))...
+2*nnz(A2&B2)/(nnz(A2) + nnz(B2))...
+2*nnz(A3&B3)/(nnz(A3) + nnz(B3))...
+2*nnz(A4&B4)/(nnz(A4) + nnz(B4)))/4
Обратите внимание: мне также интересно узнать, можно ли в этом случае применить Измерение расстояния Хаусдорфа как для трехфазных, так и для четырехфазных сегментированных изображений ??
РЕДАКТИРОВАТЬ: у меня есть новый запрос. Если предположить, что изображение имеет 4 области и было правильно сегментировано таким образом, как показано в примере ниже: Если теперь для обозначения разных областей используются разные значения интенсивности, то с использованием коэффициента Dice два сегментированных результата дадут разные результаты. Для Сегментированного Региона 1 у меня кубик = 1 **, а для ** Сегментированного Региона 2 у меня кубик = 0,75. Но оба результата точны. Как я могу изменить свой код так, чтобы сегментированные результаты отражали ответ коэффициентов игральных костей?