Làm cách nào để truy xuất kết cấu bằng GLCM và phân loại bằng Trình phân loại SVM?


12

Tôi đang trong một dự án phân loại và phân loại khối u gan. Tôi đã sử dụng Vùng phát triển và FCM để phân chia gan và khối u tương ứng. Sau đó, tôi đã sử dụng ma trận xuất hiện cấp độ xám để trích xuất tính năng kết cấu. Tôi phải sử dụng Support Vector Machine để phân loại. Nhưng tôi không biết cách bình thường hóa các vectơ đặc trưng để tôi có thể cung cấp nó làm đầu vào cho SVM. Bất cứ ai có thể cho biết làm thế nào để lập trình nó trong Matlab?

Đối với chương trình GLCM, tôi đã đưa hình ảnh phân đoạn khối u làm đầu vào. Tôi đã đúng chưa? Nếu vậy, tôi nghĩ, sau đó, đầu ra của tôi cũng sẽ chính xác.

Mã hóa glcm của tôi, theo như tôi đã thử là,

I = imread('fzliver3.jpg');
GLCM = graycomatrix(I,'Offset',[2 0;0 2]);
stats = graycoprops(GLCM,'all')
t1= struct2array(stats)


I2 = imread('fzliver4.jpg');
GLCM2 = graycomatrix(I2,'Offset',[2 0;0 2]);
stats2 = graycoprops(GLCM2,'all')
t2= struct2array(stats2)

I3 = imread('fzliver5.jpg');
GLCM3 = graycomatrix(I3,'Offset',[2 0;0 2]);
stats3 = graycoprops(GLCM3,'all')
t3= struct2array(stats3)

t=[t1,t2,t3]
xmin = min(t); xmax = max(t);
scale = xmax-xmin;
tf=(x-xmin)/scale

Đây có phải là một thực hiện đúng? Ngoài ra, tôi nhận được một lỗi ở dòng cuối cùng.

Đầu ra của tôi là:

stats = 

   Contrast: [0.0510 0.0503]
Correlation: [0.9513 0.9519]
     Energy: [0.8988 0.8988]
Homogeneity: [0.9930 0.9935]
t1 =

Columns 1 through 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988
Columns 7 through 8

0.9930    0.9935
stats2 = 

   Contrast: [0.0345 0.0339]
Correlation: [0.8223 0.8255]
     Energy: [0.9616 0.9617]
Homogeneity: [0.9957 0.9957]
t2 =

Columns 1 through 6

0.0345    0.0339    0.8223    0.8255    0.9616    0.9617
Columns 7 through 8

0.9957    0.9957
stats3 = 

   Contrast: [0.0230 0.0246]
Correlation: [0.7450 0.7270]
     Energy: [0.9815 0.9813]
Homogeneity: [0.9971 0.9970]
t3 =

Columns 1 through 6

0.0230    0.0246    0.7450    0.7270    0.9815    0.9813
Columns 7 through 8

0.9971    0.9970

t =

Cột 1 đến 6

0.0510    0.0503    0.9513    0.9519    0.8988    0.8988

Cột 7 đến 12

0.9930    0.9935    0.0345    0.0339    0.8223    0.8255

Cột 13 đến 18

0.9616    0.9617    0.9957    0.9957    0.0230    0.0246

Cột 19 đến 24

0.7450    0.7270    0.9815    0.9813    0.9971    0.9970

??? Error using ==> minus
    Matrix dimensions must agree.

Các hình ảnh đầu vào là:

fzliver1 fzliver2 fzliver3


Bạn đã sử dụng gì để thực hiện thuật toán Fuzzy C-Means?
Spacey

@Mohammad Tôi không hiểu bạn ạ. Nếu bạn đang hỏi về phần mềm, tôi đã sử dụng Matlab.
Gomathi

Có, tôi nhận ra điều đó, nhưng ý tôi là bạn đã sử dụng thư viện tích hợp để triển khai phân đoạn Fuzzy-C-Means hay bạn tự viết hoặc nhập thư viện của bên thứ 3? Tôi yêu cầu bởi vì tôi cũng quan tâm đến việc thực hiện một thuật toán phân khúc, và nền tảng của tôi cũng là MATLAB.
Spacey

@Mohammad Không thưa ngài, tôi đã không cài đặt bất kỳ thư viện cụ thể nào cho FCM. Tôi đã sử dụng FCM Threshehold. Tham khảo Trao đổi tập tin trung tâm Matlab. Tôi hy vọng nó sẽ hữu ích cho bạn.
Gomathi

phương pháp tốt nhưng tôi có phần mềm ENVI 4.0. Tôi muốn xử lý hình ảnh vệ tinh Landsat 7 để đánh giá khối lượng cây

Câu trả lời:


8

Bạn đang sử dụng Matlab? Nếu vậy thì bạn sẽ cần Hộp công cụ Tin sinh học, bao gồm trình phân loại SVM hoặc bạn có thể tải xuống libsvm, có trình bao bọc Matlab để đào tạo và kiểm tra.

Sau đó, bạn sẽ cần một số dữ liệu được dán nhãn. Bạn đang phân loại tummors gan trái ngược với gan khỏe mạnh? Sau đó, bạn sẽ cần hình ảnh của khối u gan và gan khỏe mạnh, mỗi nhãn như vậy.

Sau đó, bạn cần tính toán một số tính năng. Đó là những gì, phụ thuộc vào bản chất của vấn đề. Tính năng kết cấu có vẻ như một khởi đầu tốt. Xem xét sử dụng ma trận đồng xảy ra hoặc các mẫu nhị phân cục bộ.

Chỉnh sửa: Kể từ phiên bản R2014a, có một hàm fitcsvm trong Hộp công cụ Thống kê và Máy học để đào tạo trình phân loại SVM nhị phân. Ngoài ra còn có fitcecoc để đào tạo một SVM nhiều lớp.


Cảm ơn bạn. Tôi đã tải libsvm. Tôi cũng đã tính toán các tính năng kết cấu bằng cách sử dụng ma trận đồng biến mức xám. Nhưng tôi không biết làm thế nào để cung cấp đầu vào cho chương trình svm. Vui lòng tham khảo stackoverflow.com/questions/9751265/ Hãy vui lòng hướng dẫn tôi.
Gomathi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.