Saya perlu mengelompokkan hati dari gambar CT abdomen menggunakan Adaptive Thresholding. Tapi saya memisahkan seluruh latar depan dari latar belakang saja. Saya hanya perlu bagian hati dari latar depan dipisahkan. Lihat file pdf di http://www.ijcaonline.org/casct/number1/SPE34T.pdf Saya membutuhkan output yang mirip dengan yang ditunjukkan pada Gambar 6.
Saya lampirkan kode saya di sini. Mohon bantu saya.
%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 ([email protected])
% 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);
Kode saya yang dimodifikasi untuk 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');
matlab
image-processing
computer-vision
Gomathi
sumber
sumber
Jawaban:
Saya melihat tautan makalah (SS Kumar) yang Anda referensikan dan tautan tempat Anda mendapatkan kode (HIPR) adalah dua algoritma yang berbeda - walaupun keduanya terdengar seperti Adaptive Thresholding
Pertama saya ingin memberi tahu Anda perbedaannya.
Dalam metode HIPR, asumsi umum pada dasarnya adalah gambar tingkat 2 kelas - yaitu foreground dan background. Dalam setiap 2 ambang batas kelas, seseorang mengharapkan 2 puncak atau wilayah dalam histogram gambar, khususnya latar belakang vs latar, teks vs kertas putih. Jika Anda entah bagaimana menemukan titik lembah optimal dalam histogram - Anda mendapatkan pembagian terbersih. Berikut adalah bagaimana histogramnya terlihat:
Namun, titik lembah ini mungkin sedikit bergeser di sekitar lokal. Ada contoh bagus variasi pencahayaan yang diberikan di sana. Oleh karena itu, titik lembah optimal ini ada di mana-mana tetapi sedikit bervariasi secara spasial, maka ambang universal akan gagal. Oleh karena itu, titik lembah (ambang batas) dihitung pada setiap wilayah lokal.
Metode kertas SS Kumar dan lebih khusus kelas gambar yang Anda hadapi, adalah multi-kelas (beberapa objek masing-masing dengan band intensitas yang berbeda dan menyebar). Dalam kasus ini, histogram adalah multi-modal, yaitu memiliki banyak puncak dan lembah dan mungkin setiap puncak berhubungan dengan objek yang berbeda, namun mungkin bahkan lebih kompleks.
Histogram mungkin terlihat seperti ini: (ini adalah gambar yang sama seperti di kertas).
Dalam hal ini, pendekatan 2 kelas di atas hanya akan gagal karena tidak ada satu lembah yang baik. Itulah sebabnya gambar pertama yang Anda unggah terlihat seperti titik hitam / putih di sekitar.
Arti Adaptive Thresholding di sini, menyiratkan bahwa Anda perlu mengidentifikasi puncak yang benar dan pita skala abu-abu yang mencakup sebagian besar intensitas tuas dan benda-benda lain dalam kontras yang memungkinkan
Apa yang harus anda lakukan
Pertama-tama, jika wajib menggunakan Adaptive thresholding, cari histogram dan lihat rentang intensitas apa dan kemudian untuk ambang kiri atau ke kanan adalah batas intensitas piksel yang harus dibuang.
Atau Anda dapat menggunakan Region Growing atau split and merge algoritma. Lihat pertanyaan ini untuk beberapa informasi: Metode segmentasi apa yang dapat digunakan untuk gambar sederhana?
sumber