Сероватое изображение в повышении резкости изображения с использованием фильтра Лапласа

Я новичок в обработке изображений.

Сейчас я изучаю лапласовские методы заточки. Но есть вещь, которую я не мог понять. Я надеюсь, что вы можете мне помочь.

Как вы все знаете, изображение с резкостью возникает, когда мы добавляем изображение, отфильтрованное лапласианом, к исходному изображению.

Но после получения изображения, отфильтрованного по лапласиану, мой справочник масштабирует это отфильтрованное по лапласиу изображение для отображения и получает сероватое изображение. И добавляем этот серенький к исходному изображению и в итоге получаем изображение с резкостью.

Моя проблема в том, как я могу получить это сероватое изображение.

Вот мой код:

image1=imread('hw1image1.tif');
m=[1 1 1; 1 -8 1; 1 1 1];
f1=imfilter(image1,m);
r=image1-f1;
subplot(1,3,1);
imshow(image1);
subplot(1,3,2);
imshow(f1);
subplot(1,3,3);
imshow(r);

f1 — изображение, отфильтрованное по лапласиану. Но это не серовато, как вы все знаете. Как я могу получить этот серый?

Редактировать:

http://i.imgur.com/9qqXX.jpg (1-е исходное изображение, 2-е сероватое одно, 3-е резкое изображение)

Спасибо за помощь.


person user1907578    schedule 16.12.2012    source источник
comment
Я не понимаю минусов. Этот вопрос показывает исследовательские усилия и работу.   -  person rayryeng    schedule 07.05.2015


Ответы (1)


пытаться

imshow( f1, [] ); title('Laplacian filtered image');

Добавление [] в imshow должно масштабировать изображение уровня серого, и вы должны увидеть сероватый результат, к которому вы стремитесь.

ИЗМЕНИТЬ:

Еще одна вещь, которая может вызвать проблемы, — это тип данных вашего изображения. Если ваше изображение хранится как тип uint8, оно не будет иметь отрицательных значений (из-за типа unsigned).

пытаться:

img = im2double( image1 ); % convert image from uint to double
f1 = imfilter( img, m );
figure; imshow( f1 ); title( 'Laplacian filtered image' );
r = img - f1; % perform the image editing with double precision variables and NOT with unsigned ints.
r = im2uint( r ); % if you have to -cast only the final result to unsigned ints.

Как правило, всегда выполняйте манипуляции с изображениями с плавающей запятой и воздерживайтесь от манипуляций с изображениями без знака int.

Если у вас нет выбора (аппаратные ограничения/ограничения памяти) и вы должны выполнять манипуляции, используя изображения unsigned int - имейте в виду, что отрицательные значения не представляются, а большие значения обрезаются. Ваша манипуляция должна быть в состоянии справиться с этими случаями.

person Shai    schedule 16.12.2012
comment
@user1907578 user1907578 - ваше изображение результата r соответствует вашим ожиданиям? Ваша единственная проблема - сероватый цвет: f1? Возможно, единственная проблема заключается в масштабировании отображаемого изображения f1. Поскольку это изображение имеет как положительные, так и отрицательные значения, его масштабирование не является тривиальным и может варьироваться от программного обеспечения к программному обеспечению. Это может быть причиной того, что отображаемые f1 выглядят иначе, чем в вашем справочнике, но значения те же. - person Shai; 16.12.2012
comment
Раньше фон моего f1 был почти черным, как: i.imgur.com/tEuKz.jpg Но после получение этого справочника также сделало это: i.imgur.com/JBRAi.jpg - person user1907578; 16.12.2012
comment
Подводя итог, я добавил первый к оригиналу, но справочник добавил к оригиналу второй. Из-за этого я в замешательстве. И не уверен в своем результате r - person user1907578; 16.12.2012
comment
К сожалению, это не решило мою проблему, но, как я уже сказал, эта информация полезна (особенно для меня, потому что я новичок и не знаю, что сказало большинство из вас), и еще раз спасибо. :) - person user1907578; 16.12.2012