Tôi đang cố gắng sử dụng label2rgb để tạo các lát nhãn RGB và sử dụng nó để cập nhật âm lượng RGB như thế này:
labelRGB_slice=label2rgb(handles.label(:,:,handles.current_slice_z), 'jet', [0 0 0]);
handler.labelRGB(:,:,handles.current_slice_z) = labelRGB_slice;
Tôi nhận được lỗi sau:
**Bài tập có nhiều thứ nguyên rh không phải đơn lẻ hơn chỉ số dưới không đơn lẻ**
Lỗi trong Tesis_GUI>drawSeedButton_Callback (dòng 468)
handler.labelRGB(:,:,handles.current_slice_z) = labelRGB_slice;
Khi gỡ lỗi tôi nhận được điều này:
kích thước(nhãnRGB_slice)
trả lời =
160 216 3
K>> kích thước(handles.labelRGB(:,:,handles.current_slice_z) )
trả lời =
160 216
Mình khai báo handler.labelRGB như thế này:
handler.labelRGB = số không(dim(1), dim(2), dim(3), 3);
Vì vậy, tôi không hiểu sự khác biệt về chỉ số.
Làm thế nào để phân bổ lát hoạt động?
Theo tuyên bố của bạn xử lý.labelRGB
nhân tiện, nó có kích thước bằng [160 216 3 3]
của mảng 4D, nhưng bạn lập chỉ mục cho mảng đó dưới dạng mảng 3D bằng cách sử dụnghandler.labelRGB(:,:,handles.current_slice_z)
Điều này có nghĩa là matlab sẽ sử dụng lập chỉ mục tuyến tínhcho hai chiều cuối cùng. Vì vậy, nếu chúng ta nói xử lý.current_slice_z = 5
, trả về handler.labelRGB(:,:,2,2)
, có kích thước bằng [Ma trận 160 216]
. Vì vậy, theo xử lý.current_slice_z
nghĩa là bạn cần sử dụng
handler.labelRGB(:,:,:,handles.current_slice_z) = labelRGB_slice;
hoặc
handler.labelRGB(:,:,handles.current_slice_z,:) = labelRGB_slice;
Tôi là một lập trình viên xuất sắc, rất giỏi!