2014-01-18 3 views
1

У меня есть следующее изображение (это номерной знак), и на него повлияли солевые и перечные шумы с вероятностью 0,9 (каждый пиксель имел 90% шанс превратить полностью белый или полностью черный). Мне нужно очистить его как можно лучше, чтобы nmake читал число. У меня есть основные разрешенные алгоритмы в Python, но изменения разрешены - и мне нужно как-то сделать изображение ясным. Мы превращаем изображение в черно-белое растровое изображение пикселей, которые загружаются в матрицу, и мы выполняем все алгоритмы непосредственно на матрице. Мы используем 2 варианта медианов - я пробовал много комбинаций из них, но безрезультатно - не было получено четкой картины. Мне отчаянно нужна помощь!Очистка соли и перечных шумов

код и изображение в этом месте в SkyDrive: http://sdrv.ms/1az6sRC для того, чтобы использовать код Python 3.2 и Обязательное дополнение в каталоге должен быть установлен для того, чтобы представить изображения в Python. Необходимо импортировать матрицу классов, а файл clean.py с функцией clean содержит мои попытки - эта функция может использовать любой код в файле (с вариантами) для достижения максимально возможного результата.

Любая помощь будет оценена по достоинству.

ответ

1

Традиционный фильтр де-шумирования с солью и перцем подходит, когда вероятность шума составляет около 40% (вероятность того, что пиксель изображения перевернут). В вашем случае у вас есть шум плотности. Для решения этой проблемы вам понадобится использовать более дорогостоящий медианный фильтр. При более близком рассмотрении результатов этого paper это кажется достижимым, но вам нужно его реализовать.

+1

Unbelievably успешно результаты с алгоритмом этой статьи! – sepdek

1

Медиана фильтр решает проблему соли и перца, но производит размытое изображение. Чтобы решить проблему соли и перца и сохранить исходную фотографию, вы должны использовать Alpha Trim Filter. Фильтр Идея:

1- Поместите окно над элементом

2- Возьмите элементы

3- элементы заказа

4- Утилизируйте элементы в начале и в конце ПРТ (согласно значению альфа-входа)

5- Возьмите среднюю сумму суммирования оставшихся элементов и разделите сумму на их количество.

Вы можете использовать MATLAB для его реализации .Есть много ранее реализован альфа комплектаций фильтров вы можете использовать его и связать питон программу MATLAB

Извините о работе с питоном, потому что мой фон об этом не очень будет

+0

не работает для случаев высокого шума, как это ... – sepdek

0

Привет, вы можете использовать средний фильтр или фильтр Max, так как у вас есть 90% шум. Пожалуйста, используйте приведенный ниже код на C++, но вы можете легко связать его с python. // maxOrmedian = True/False, inputImage = станд :: вектор, kernalSize = 3, ширина = 256, высота = 256 //

std::vector<double> medianFilter(bool maxOrmedian, std::vector<double> inputImage, double kernalSize,int width, int height) 
    { 
     /* Fill all the values to output image */ 
     vector<double> outImage = inputImage; 
     for(int y = kernalSize; y < height - kernalSize; y++) 
     { 
     for(int x = kernalSize; x < width - kernalSize; x++) 
     { 
      std::vector<double> tempList; 
      for(int i = - kernalSize; i <= kernalSize; i++) 
      { 
       for(int j = -kernalSize; j <= kernalSize; j++) 
       { 
        double pixelValue = inputImage[(y+j)*width + (x+i)]; 
        tempList.push_back(pixelValue); 
       } 
      } 
      std::sort(tempList.begin(),tempList.end()); 
      double newPixelValue = 0; 
      if(maxOrmedian) //median filter 
       newPixelValue = tempList[tempList.size()/2]; 
      else 
       newPixelValue = tempList[tempList.size()-1]; 
      outImage[y*width + x] = newPixelValue; 
      } 
     } 
     return outImage;   
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^