圖像像素灰度內插(Matlab實現)


常用的像素灰度內插法:最近鄰元法、雙線性內插法、三次內插法

%%像素灰度內插
factor = 0.75;%縮放比
u = 0.6;v = 0.7;
itp1 = uint8(zeros(ceil(h/factor),ceil(w/factor)));
itp2 = uint8(zeros(ceil(h/u),ceil(w/v)));
itp3 = uint8(zeros(ceil(h/u),ceil(w/v)));

下述的J3為待插值灰度圖像,itp為插值圖像

1.最近鄰元法

         在待求像素的四鄰像素中,將距離這點最近的鄰像素灰度賦給待求像素。

%最近鄰元法
 for i = 1:h/factor
    for j = 1:w/factor
        itp1(i,j) = J3(floor(i*factor+0.5),floor(j*factor+0.5));
    end
 end

2.雙線性內插法

%雙線性內插法
for i = 2:h/u-1
    for j = 2:w/v-1
        itp2(i,j) = (1-(i*u-floor(i*u)))*(1-(j*v-floor(j*v)))*J3(floor(i*u),floor(j*v))...
                   +(1-(i*u-floor(i*u)))*(j*v-floor(j*v))*J3(floor(i*u),floor(j*v)+1)...
                   +(i*u-floor(i*u))*(1-(j*v-floor(j*v)))*J3(floor(i*u)+1,floor(j*v))...
                   +(i*u-floor(i*u))*(j*v-floor(j*v))*J3(floor(i*u)+1,floor(j*v)+1);         

    end
end

3.三次內插法

function [f] = S(x)
if (0<=abs(x))&&(abs(x)<1)
    f = 1-2*(abs(x))^2+(abs(x))^3;
elseif (1<=abs(x))&&(abs(x)<2)
    f = 4-8*abs(x)+5*(abs(x))^2-(abs(x))^3;
else
    f = 0;
end
end


%三次內插法 f = double(J3); u = 0.6;v = 0.7; for i = ceil(2/u):h/u-2 for j = ceil(2/v):w/v-2 A = [S(1+(j*v-floor(j*v))) S((j*v-floor(j*v))) S(1-(j*v-floor(j*v))) S(2-(j*v-floor(j*v)))]; C = [S(1+(i*u-floor(i*u)));S((i*u-floor(i*u)));S(1-(i*u-floor(i*u)));S(2-(i*u-floor(i*u)))]; i1 = floor(i*u); j1 = floor(j*v); B = [f(i1-1,j1-1) f(i1-1,j1) f(i1-1,j1+1) f(i1-1,j1+2); f(i1,j1-1) f(i1,j1) f(i1,j1+1) f(i1,j1+2); f(i1+1,j1-1) f(i1+1,j1) f(i1+1,j1+1) f(i1+1,j1+2); f(i1+2,j1-1) f(i1+2,j1) f(i1+2,j1+1) f(i1+2,j1+2);]; itp3(i,j) = A*B*C; end end

 

上述的內插法處理的結果出現了黑邊,可以通過將黑邊區域賦予原始圖像的對應區域的像素灰度值。

可通過以下循環實現。

%去黑邊
[m,n] = size(J3);%原始圖像的行列數
for i = 1:floor(1/u) for j = 1:floor(n/v) itp(i,j) = J3(ceil(i*u),ceil(j*v)); itp(floor(m/u),j) = J3(m,ceil(j*v)); end end for j = 1:floor(1/v) for i = 1:floor(m/u) itp(i,j) = J3(ceil(i*u),ceil(j*v)); itp(i,floor(n/v)) = J3(ceil(i*u),n); end end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM