logo

Генерисање Гаусовог филтера у Ц++

Гаусово филтрирање има широку примену у области обраде слика. Користи се за смањење шума слике. У овом чланку ћемо генерисати а 2Д Гаусово језгро. 2Д Гаусово језгро следи доле дату Гаусову расподелу. 
Г(к и)=фрац{1}{2пи сигма ^{2}}е^{-фрац{к^{2}+и^{2}}{2сигма ^{2}}}   
Где је и растојање дуж вертикалне осе од почетка к је растојање дуж хоризонталне осе од почетка и ? је стандардна девијација.

Шта је Гаусово филтрирање?

Гаусово филтрирање је техника која се користи у обради слике за углађивање слика и смањење шума. Функционише применом ефекта замућења користећи математичку функцију која се зове Гаусова функција која даје већу тежину централним пикселима, а мању околним пикселима. Ово доводи до замућења природног изгледа које помаже у уклањању нежељених детаља попут зрна или малих артефаката. Гаусово филтрирање се широко користи као корак предобраде у задацима као што су препознавање објеката за детекцију ивица и побољшање слике, што олакшава алгоритмима да се фокусирају на важне карактеристике.



Имплементација у Ц++  

C++
// C++ program to generate Gaussian filter #include  #include    #include    using namespace std; // Function to create Gaussian filter void FilterCreation(double GKernel[][5]) {  // initialising standard deviation to 1.0  double sigma = 1.0;  double r s = 2.0 * sigma * sigma;  // sum is for normalization  double sum = 0.0;  // generating 5x5 kernel  for (int x = -2; x <= 2; x++) {  for (int y = -2; y <= 2; y++) {  r = sqrt(x * x + y * y);  GKernel[x + 2][y + 2] = (exp(-(r * r) / s)) / (M_PI * s);  sum += GKernel[x + 2][y + 2];  }  }  // normalising the Kernel  for (int i = 0; i < 5; ++i)  for (int j = 0; j < 5; ++j)  GKernel[i][j] /= sum; } // Driver program to test above function int main() {  double GKernel[5][5];  FilterCreation(GKernel);  for (int i = 0; i < 5; ++i) {  for (int j = 0; j < 5; ++j)  cout << GKernel[i][j] << 't';  cout << endl;  } } 

Излаз: 

0.00296902 0.0133062 0.0219382 0.0133062 0.00296902   
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.0219382 0.0983203 0.162103 0.0983203 0.0219382
0.0133062 0.0596343 0.0983203 0.0596343 0.0133062
0.00296902 0.0133062 0.0219382 0.0133062 0.00296902 

Примене Гаусовог филтрирања у стварном свету

Гаусови филтери се користе у многим свакодневним технологијама за побољшати квалитет слике и извући корисне информације :

  • Цомпутер Висион : Помаже у откривању ивица и облика смањујући шум пре примене алгоритама детекције.
  • Медицал Имагинг : Користи се за изглађивање МРИ или ЦТ скенирања што олакшава идентификацију ткива и абнормалности.
  • Детекција објеката : Припрема слике уклањањем ометања омогућавајући моделима да се фокусирају на кључне карактеристике.
  • Алати за уређивање фотографија : Обично се користи за примену ефекти замућења

Поређење са другим филтерима

Ево како Гаусов филтер издваја се од осталих уобичајених филтера:



  • Филтер оквира (просечан филтер) : Замагљује слику давањем једнака тежина на све околне пикселе. Гаусов филтер је бољи јер даје већа тежина до централних пиксела стварајући глаткије природније замућење.
  • Медијан филтер : Замењује сваки пиксел са медијана оближњих вредности што је одлично за уклањање бука соли и бибера . За разлику од Гауссовог, он не замагљује слику толико, али може изобличити ивице.
  • Билатерални филтер : Као Гаусов али и сматра интензитет пиксела очување разлика ивице при глађењу. Напреднији је, али и више рачунски тежак .

2Д вс 1Д Гаусово филтрирање

А 2Д Гаусов филтер може се разбити на два 1Д филтера — једна хоризонтална и једна вертикална. Ово се зове одвојивости и то значи да не морамо одједном да примењујемо комплетно 2Д језгро.

Зашто је важно:

Уместо да радимо тешке прорачуне са великим 2Д кернелом (нпр. 5×5), примењујемо 1Д кернел хоризонтално затим тхе исто језгро вертикално . Ово скраћује време израчунавања и даје исти резултат .

шта је корисничко име

Разматрање перформанси

Генерисање и примена а Гаусово језгро може бити рачунарски скупо посебно за велике слике или језгра.



  • Временска сложеност :
    • За језгро величине к × к примењено на ан н × н слика временска сложеност је О(н² × к²) .
    • То је зато што свака операција пиксела укључује петљу преко целог кернела.
  • Оптимизација – одвојиви филтери :
    Гаусова језгра су одвојиви што значи да се 2Д филтер може пробити два 1Д филтера : једна хоризонтална и једна вертикална.
    • Ово смањује временску сложеност на О(н² × к) правећи га много брже за већа језгра.

Коришћење одвојивих филтера је уобичајен трик у системима из стварног света за убрзавање Гаусовог филтрирања без губитка квалитета.

Муст Реад

  • Примените Гаусс филтер на слику помоћу Питхон-а
  • Како генерисати 2-Д Гаусов низ користећи НумПи?
  • Интеграција Гаусових функција

Закључак

Гаусово филтрирање је једноставна, али моћна техника за смањење шума и замућења слике користећи глатки пондерисани просек заснован на Гаусовој функцији. У овом чланку смо генерисали а 2Д Гаусово језгро и истраживао његову улогу у разним апликације у стварном свету попут компјутерског вида медицинског снимања и уређивања фотографија. Такође смо га упоредили са другим филтерима и разговарали о начинима да оптимизовати перформансе коришћењем одвојивих филтера. Свеукупно Гаусово филтрирање је а основни алат у обради слике помаже у побољшању квалитета слике и олакшава алгоритмима да се фокусирају на важне визуелне детаље.