實現KNN(K近鄰平滑濾波器)

2021-07-31 23:32:33 字數 948 閱讀 1360

要求:演算法實現為函式[im]=knn_denoise (i,k,n),其中i為讀入的影象矩陣;k為最近鄰個數,n為模板大小引數(n*n)。

i = imread('peppers.png');[im]=knn_denoise(i,9,5); figure, imshow(im);

function [im] = knn_denoise(i, k, n)

% i = [1 3 2 3 2 1 2; 1 2 1 4 3 3 2; 1 10 2 3 4 4 2;

% 5 2 6 18 8 7 3; 5 5 7 0 8 8 5; 5 6 7 8 9 9 8;

% 4 5 6 8 8 6 7];

% k=9;

% n=5;

i = imnoise(i,'salt & pepper');

figure,imshow(i);

[m, n] = size(i);

s = ceil(n/2);

d = fix(n/2);

i_e = m-s+1;

j_e = n-s+1;

for i=s:i_e

for j=s:j_e

b = i(i-d:i+d, j-d:j+d); %b為取n*n的模板

a = reshape(b, 1, );%把b變成一維放到a中,是為了方便使用sort函式(我可以想到的方法)

[val, id] = sort(abs(a-i(i, j))); %按離i(i,j)的距離由近到遠排序

for k=2:1+k

t = k-1;

c(t,1) = a(1, id(1, k)); %去掉i(i,j)本身,取k個放到c中

endi(i, j) = round(mean(c)); %求均值

endendim = i;

平滑空間濾波器

平滑線性空間濾波器的輸出 響應 是包含在濾波器模板鄰域內的畫素的簡單平均值。這些濾波器有時也稱為均值濾波器。也可以把它們歸入低通濾波器。這種處理的結果降低了影象灰度的尖銳變化。由於典型的隨機雜訊由灰度級的急劇變化組成,因此常見的平滑處理的應用就是降噪。然而,由於影象邊緣 幾乎總是一幅影象希望有的特性...

空間平滑濾波器(上)

部落格 上 為數字影象處理課程理論,部落格 下 為對應的實驗部分。教材 中文教材 數字影象處理 第三版 岡薩雷斯 實驗教材 matlab版 數字影象處理 matlab版 岡薩雷斯 英文教材 digital image processing 3ed gonzalez 正文 目錄 空間平滑濾波器 1.空...

濾波器實現

基於matlab內建函式的fir設計。功能 設計標準頻率響應的基於窗函式的fir濾波器。語法 說明 fir1函式可以實現加窗線形相位fir數字濾波器設計,它可以設計出標準的低通 高通 帶通和帶阻濾波器.當wn w1 w2 時,fir1函式可得到帶通濾波器,其通帶為w1 w w2.在設計高通和帶阻濾波...