Обратитесь к this article.Пользовательский банк фильтров не генерирует ожидаемый выход
Я внедрил раздел 4.1 (Предварительная обработка).
Шаг предварительной обработки предназначен для улучшения функций изображения по набору выбранных направлений. Во-первых, изображение серого масштабирования и фильтруется с помощью фильтра заточки (мы вычитаем из изображения его локально-среднюю отфильтрованную версию ), тем самым устраняя компонент постоянного тока.
Мы выбрали 12 неперекрывающихся фильтров, чтобы проанализировать 12 разных направлений, повернутых относительно 15 ° друг к другу.
Поскольку данная формула в статье неверно, я попробовал два набора различных формул.
Первый набор формулы,
Второй набор формулы,
Ожидаемый о utput должно быть,
Ни один из них дают правильные результаты.
Может кто-нибудь предложить мне какие-либо изменения?
Большая relevalt часть исходного кода находится здесь:
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'] (http://stackoverflow.com/a/39339327/2994596)? – SleuthEye
Если «ни один из них не дает правильных результатов», вы имеете в виду, что они не дают * сами по себе * плакат результатов в ссылочной статье, то я согласен. Вот почему я добавил комментарий «если намерение состоит в том, чтобы воспроизвести результаты статьи, которые у вас все еще есть, чтобы преодолеть другие препятствия. Первый из них заключается в том, чтобы на самом деле использовать заостренное изображение в качестве входа в банк фильтров» в конце моего после. – SleuthEye
Из того, что я помню, сначала передавал изображение через фильтр заточки (как описано в заявлении «Во-первых, изображение серого масштабируется и фильтруется с помощью фильтра заточки (мы вычитаем из изображения его локально-среднюю отфильтрованную версию), тем самым устраняя DC "из бумаги) значительно улучшило результаты. – SleuthEye