Пожалуйста, обратитесь к этой статье.
Я реализовал раздел 4.1 (Предварительная обработка).
Этап предварительной обработки направлен на улучшение характеристик изображения по набору выбранных направлений. Во-первых, изображение отображается в оттенках серого и фильтруется фильтром повышения резкости (мы вычитаем из изображения его версию, отфильтрованную локальным средним значением), тем самым устраняя постоянную составляющую.
Мы выбрали 12 неперекрывающихся фильтров для анализа 12 различных направлений, повернутых относительно друг друга на 15°.
Репозиторий GitHub находится здесь.
Поскольку данная формула в статье неверна, я попробовал два набора разных формул.
Первый набор формул
Второй набор формул
Ожидаемый результат должен быть,
Ни один из них не дает должных результатов.
Кто-нибудь может предложить мне какую-либо модификацию?
Репозиторий GitHub находится здесь.
Наиболее важная часть исходного кода находится здесь:
public List<Bitmap> Apply(Bitmap bitmap)
{
Kernels = new List<KassWitkinKernel>();
double degrees = FilterAngle;
KassWitkinKernel kernel;
for (int i = 0; i < NoOfFilters; i++)
{
kernel = new KassWitkinKernel();
kernel.Width = KernelDimension;
kernel.Height = KernelDimension;
kernel.CenterX = (kernel.Width) / 2;
kernel.CenterY = (kernel.Height) / 2;
kernel.Du = 2;
kernel.Dv = 2;
kernel.ThetaInRadian = Tools.DegreeToRadian(degrees);
kernel.Compute();
//SleuthEye
kernel.Pad(kernel.Width, kernel.Height, WidthWithPadding, HeightWithPadding);
Kernels.Add(kernel);
degrees += degrees;
}
List<Bitmap> list = new List<Bitmap>();
Bitmap image = (Bitmap)bitmap.Clone();
//PictureBoxForm f = new PictureBoxForm(image);
//f.ShowDialog();
Complex[,] cImagePadded = ImageDataConverter.ToComplex(image);
Complex[,] fftImage = FourierTransform.ForwardFFT(cImagePadded);
foreach (KassWitkinKernel k in Kernels)
{
Complex[,] cKernelPadded = k.ToComplexPadded();
Complex[,] convolved = Convolution.ConvolveInFrequencyDomain(fftImage, cKernelPadded);
Bitmap temp = ImageDataConverter.ToBitmap(convolved);
list.Add(temp);
}
return list;
}
uStar
иvStar
? - person SleuthEye   schedule 21.10.2016Bitmap
не очень хорошо, чтобы сохранить резкость ввода, которая включает отрицательные значения, вместо этого используйтеdouble[,]
. 2) когда вы настраиваете фильтры вKassWitkinFilterBank.Apply
, вы должны увеличивать углы с помощьюdegrees += FilterAngle
. - person SleuthEye   schedule 26.10.2016