Xóa bóng khỏi hình ảnh


7

Tôi muốn chỉ trích xuất nho từ hình ảnh. Thật không may, đôi khi tôi không nhận được chính xác nho.

Tôi có một mã không hoạt động tốt trong mọi trường hợp. Đôi khi, nó không phân biệt giữa bóng và nho.

Hình ảnh đầu vào ví dụ:

nhập mô tả hình ảnh ở đây

Kết quả tôi nhận được:

nhập mô tả hình ảnh ở đây

Và đây là mã của tôi:

RGB = imread('DSC02807.JPG');
GRAY = rgb2gray(RGB);

threshold = graythresh(GRAY);
originalImage = im2bw(GRAY, threshold);

originalImage = bwareaopen(originalImage,250);

SE = strel('disk',10);
IM2 = imclose(originalImage,SE);

originalImage = IM2;

imshow(originalImage);

Tôi nghĩ rằng câu hỏi này phù hợp hơn tại SE dsp ...
bla

@nate, cảm ơn bạn .. nhưng SE dsp có nghĩa là gì? Tôi đọc được rằng đó là môi trường nhỏ, nhưng tôi thực sự không biết: / bạn có thể cho tôi biết về điều đó không?

Alon, tôi đã kiểm tra mã của bạn và tôi thực sự không hiểu những gì không chính xác về nó. Nó lọc bóng rất tốt.
bla

3
@Alon Shmiel Cặp đầu vào / đầu ra bạn cung cấp dường như tạo ra kết quả tốt. Có lẽ bạn có thể chỉ ra cụ thể vấn đề ở đầu ra cụ thể này là gì, hoặc, thay vào đó, đăng một cặp hình ảnh đầu vào / đầu ra trong đó các vấn đề dễ thấy hơn?
Penelope

1
Tôi nghĩ vấn đề ban đầu của Alon là loại bỏ bóng tối trực tiếp bên dưới mỗi quả nho chứ không phải những cái trông giống như một hình trụ thuôn dài. Bạn cần phân chia chính xác nho một mình - các hình dạng trông kỳ lạ và không phải hình bầu dục hoặc hình tròn của bóng. Hay chúng không phải là bóng mà là lớp vỏ ngoài mỏng nhất của nho khúc xạ ánh sáng để trông như thế?

Câu trả lời:


8

Đây là những gì mã của bạn tạo ra (sử dụng colormap (nóng) với các ranh giới màu trắng thu được từ IM2): nhập mô tả hình ảnh ở đây

Tôi nghĩ rằng các bóng được xử lý độc đáo, tại sao bạn nghĩ rằng mã của bạn không nhận thấy giữa bóng với nho?

Đây là mã được sử dụng để sản xuất hình ảnh này

bw=IM2<1;
[B,L] = bwboundaries(bw,'noholes'); % fill any holes, so that regionprops can be used to estimate
imagesc(GRAY); hold on
for k = 1:length(B) 
    boundary = B{k};
    plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 1); hold on
end
colormap(hot(256))

1
Tôi đồng ý, bóng tối nhìn tốt. Thay vào đó là những điểm nổi bật trên nho (ví dụ như nho 4 và 5 trên dòng trên cùng) gây ra một số bất thường.
Junuxx

1
Câu trả lời này đưa ra lời giải thích tốt nhất. @Alon Shmiel: Vui lòng cụ thể hơn về vấn đề liên quan đến bóng tối và đăng một ví dụ khi nó không phù hợp. Trân trọng
mchlfchr
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.