Мне нужно отделить печень от компьютерной томографии брюшной полости, используя адаптивный порог. Но я отделяю весь передний план от одного. Мне нужна только печеночная часть переднего плана, отделенная. Проверьте файл PDF в http://www.ijcaonline.org/casct/number1/SPE34T.pdf. Мне нужен вывод, подобный показанному на рисунке 6.
Я прилагаю свою кодировку здесь. Пожалуйста, помогите мне.
%testadaptivethresh.m
clear;close all;
im1=imread('nfliver2.jpg');
bwim1=adaptivethreshold(im1,11,0.03,0);
figure,imshow(im1);
figure,imshow(bwim1);
imwrite(bwim1,'at2.jpg');
function bw=adaptivethreshold(IM,ws,C,tm)
%ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the
%foreground from the background with nonuniform illumination.
% bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local
% threshold mean-C or median-C to the image IM.
% ws is the local window size.
% tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.
%
% Contributed by Guanglei Xiong (xgl99@mails.tsinghua.edu.cn)
% at Tsinghua University, Beijing, China.
%
% For more information, please see
% http://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm
if (nargin<3)
error('You must provide the image IM, the window size ws, and C.');
elseif (nargin==3)
tm=0;
elseif (tm~=0 && tm~=1)
error('tm must be 0 or 1.');
end
IM=mat2gray(IM);
if tm==0
mIM=imfilter(IM,fspecial('average',ws),'replicate');
else
mIM=medfilt2(IM,[ws ws]);
end
sIM=mIM-IM-C;
bw=im2bw(sIM,0);
bw=imcomplement(bw);
Мой модифицированный код для testadaptivethresh.m
clear;
im=imread('nfliver7.gif');
figure,imshow(im)
bwim1=adaptivethreshold(im,300,-0.15,0);
bw=bwareaopen(bwim1,3000);
se=strel('diamond',4);
er=imerode(bw,se);
bw1=bwareaopen(er,3000);
er1=imerode(bw1,se);
bw2=bwareaopen(er1,1000);
fi=imfill(bw2,'holes');
figure,imshow(fi)
op=uint8(fi);
seg=im.*op;
figure,imshow(seg)
imwrite(seg,'sliver7.jpg');
Ответы:
Я видел ссылку на документ (из SS Kumar), на который вы ссылались, и ссылку, где вы получили код (HIPR) - это два разных алгоритма, хотя оба звучат как адаптивный порог
Сначала я хотел бы сказать вам разницу.
В методе HIPR общим предположением является, по существу, изображение уровня 2 класса - т.е. передний план и фон. В любом пороговом значении для двух классов ожидаются 2 пика или области в гистограмме изображения, в частности, фон по сравнению с фоном, текст по сравнению с белой бумагой. Если вы как-то нашли оптимальную точку долины на гистограмме - вы получите самое чистое деление. Вот как может выглядеть гистограмма:
Тем не менее, эта точка долины может слегка сместиться вокруг локально. Там приведены хорошие примеры вариаций освещения. Следовательно, эта оптимальная точка долины существует повсеместно, но немного изменяется в пространстве, поэтому универсальный порог потерпит неудачу. Следовательно, точка долины (порог) вычисляется для каждого локального региона.
Метод статьи С.С. Кумара и, в частности, класс изображений, с которыми вы имеете дело, является мультиклассовым (несколько объектов, каждый из которых имеет различную полосу интенсивности и разброс). В этом случае гистограммы являются мультимодальными, то есть имеют много пиков и долин, и, вероятно, каждый пик соответствует разному объекту, однако он может быть еще более сложным.
Гистограмма может выглядеть так: (это то же изображение, что и на бумаге).
В этом случае вышеприведенный классовый подход просто потерпит неудачу, потому что нет ни одной хорошей долины. Вот почему ваше первое изображение, которое вы разместили, выглядит как черные / белые точки вокруг.
Значение адаптивного порогового значения здесь означает, что вам необходимо определить правильный пик, и полоса серой шкалы, которая покрывает большинство интенсивностей рычага, а другие объекты находятся в резких контрастах, что позволяет
Что вы должны сделать?
Прежде всего, если необходимо использовать адаптивное пороговое значение, найдите гистограмму и посмотрите, какой диапазон интенсивности, а затем для порога влево или вправо являются границами интенсивности, пиксели которых следует отбрасывать.
В качестве альтернативы вы можете использовать Region Growing или split and merge алгоритм. Обратитесь к этому вопросу для получения дополнительной информации: какие методы сегментации можно использовать для простых изображений?
источник