Я использовал следующий код, чтобы получить границу изображения, а также удалить тень под изображением. Изображение - изображение в оттенках серого. Код:Удалить тень под изображением
x = imread('image.jpg');
sobel_h = [-1 0 1;-2 0 2;-1 0 1];
sobel_v = [-1 0 1;-2 0 2;-1 0 1]';
x_sobel_h = conv2(x,sobel_h,'same');
x_sobel_v = conv2(x,sobel_v,'same');
x_sobel_c = sqrt((x_sobel_h).^2+(x_sobel_v).^2);
x_sobel_c=uint8(x_sobel_c);
figure,imshow(x_sobel_c);
z=x_sobel_c;
z(z~=0 & z<=150)=0;
z(z>0)=255;
figure,imshow(z);
Я нашел этот код на Matlab Файл Exchange.It прост и хорошо работает с некоторыми изображениями, но остается тень на некоторых изображениях.
Тень может быть удалена, если я изменю z<=150
на более высокое значение. Но в зависимости от изображения это значение нужно изменить. Кто-нибудь знает какой-либо другой метод порогового значения для удаления тени в разных изображениях? Если кто-нибудь может указать мне на какой-либо справочный материал, я был бы благодарен. Спасибо
** ** использовать ** постоянный порог, который будет работать для всех изображений. –
Тогда вы можете предложить любой другой метод, который я могу использовать для получения лучших результатов? – Matte
Вам нужно сделать свой код для своего дела. Первое правило обработки изображений: ** IMPOSIBLE **, что любой алгоритм будет корректно работать на всех изображениях. –