找回密码
 注册
关于网站域名变更的通知
查看: 384|回复: 2
打印 上一主题 下一主题

求助:关于非局部均值滤波程序的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-28 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
% 沿行插值) |: u5 B" A) U1 L- V0 x* J+ t' }
Sd = cumsum(diff,1);  % 行叠加0 H; ?  ~  i  U1 x
% 沿列插值
3 f0 d7 A) W9 _' T0 |6 aSd = cumsum(Sd,2);    % 列叠加
# p" \4 o2 [; s4 ?5 S1 `. T* T为什么要进行叠加?& j% Q8 Z4 a) F2 f
还有这一步也不是很明白,怎么就得到每个像素点的权值了
3 r2 m, x' V0 n' c4 `$ K            SqDist = Sd(PatchSizeHalf+1:end-PatchSizeHalf,PatchSizeHalf+1:end-PatchSizeHalf)+Sd(1:end-2*PatchSizeHalf,1:end-2*PatchSizeHalf)-Sd(1:end-2*PatchSizeHalf,PatchSizeHalf+1:end-PatchSizeHalf)-Sd(PatchSizeHalf+1:end-PatchSizeHalf,1:end-2*PatchSizeHalf);4 n2 i2 j8 Z1 W4 _/ J
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2020-8-28 16:00 | 只看该作者
    分享这个源代码,应该有用/ g4 n* U' A6 U5 p2 P) p

    9 W: b9 D4 E$ G& W( Qfunction DeNimg = Non_Local_Means(Nimg,PSH,WSH,Sigma)
    : r! g) H! _* X( e1 h% Non_Local_Means滤波器6 Q; b0 k" H, L9 y/ T
    %函数输入:   |3 q6 Q0 C  z2 w2 \
    %         Nimg:  输入的图像矩阵 + 带噪声的
    ' @) r$ M& r! J' R9 i' @0 e%         PSH:  扩展窗尺寸大小( {2 \# q; |- e; B) f' {. Z3 \
    %         WSH: 窗尺寸大小: s2 s4 _4 f7 T" Y, K+ O' C% I2 C
    %         Sigma:方差' {4 R" A- @: T7 A& v; m
    %函数输出:
    + o3 x0 M) z$ s2 n" z; z8 F%         DeNimg: 重构滤波图像
    1 Y7 a9 k+ K6 Z/ U- B3 t- h: Z1 i4 o- d
    if ~isa(Nimg,'double')7 H2 o. d" g+ H' N: R6 }
        Nimg = double(Nimg)/255;+ O+ A4 \9 m/ {2 n4 |, @6 J
    end
    % u2 b" K7 t3 q; V% k: e
    9 ]; ~% N, s, L' C3 b" `% 图像维数
      n. g8 y( }+ M4 ?8 d( s7 P[Height,Width] = size(Nimg);9 |; b* w/ U& m* ^
    u = zeros(Height,Width); % 初始化去噪图像矩阵: A1 I; k; Y' y
    M = u; % 初始化权值矩阵
    8 B; R/ H7 a! R! p; |; T" k3 UZ = M; % 初始化叠加权值 accumlated weights
    5 D  [3 x6 P1 B4 O( |& A  w% 避免边界效应
    ) `2 q# q1 ]( g5 HPP = padarray(Nimg,[PSH,PSH],'symmetric','both');) X! G: X1 e: @% {* C
    PW = padarray(Nimg,[WSH,WSH],'symmetric','both');
    1 t3 {) o' ]( g% D: A7 T% padarray使用' l3 r' x' z2 C& w' \% ^* ^
    % A =
    & Z9 \9 i* e$ u  M%      1     3     4
    % A! H% i/ D, X+ _%      2     3     4# ^% c4 C# ^+ `' D: e
    %      3     4     5
    * F3 j9 C0 t* j0 I( J, }# ?% B = padarray(A, 2 * [1 1], 0, 'both')
    ! P4 c& ~" x/ B; ~%      0     0     0     0     0     0     0
    & q. N7 c7 O7 t( H: V) i%      0     0     0     0     0     0     0: [! g# x3 z2 F" [( c
    %      0     0     1     3     4     0     0
    + J( B* q* E& w( }% f%      0     0     2     3     4     0     0
    : |/ q7 i( H  \" V4 h; \  g%      0     0     3     4     5     0     0
    5 }$ X& c4 y! N$ s9 z- D" F%      0     0     0     0     0     0     0( ~2 u1 H# |9 v; m/ F  c7 t/ ]. E
    %      0     0     0     0     0     0     0
    ) m( |% ?# n- f' ?5 E% 主循环" c, W3 I! s9 m+ \7 d
    for dx = -WSH:WSH0 G  E" M) ^1 U* \* U/ t
        for dy = -WSH:WSH
    3 ^' Q4 r3 ?) A% ~) W2 O2 {* k        if dx ~= 0 || dy ~= 0
    - b$ p0 P& L/ o  G( w0 t; J            Sd = integral_img(PP,dx,dy);  % 插值图像
    % }1 U; t- Y6 {% P, m            % 获取对应像素点的平方差矩阵
    , Q2 q. \1 R6 k5 Q3 c- U# r4 c            SDist = Sd(PSH+1:end-PSH,PSH+1:end-PSH)+Sd(1:end-2*PSH,1:end-2*PSH)-Sd(1:end-2*PSH,PSH+1:end-PSH)-Sd(PSH+1:end-PSH,1:end-2*PSH);      
    7 q; C7 y3 i# a# W2 x            % 计算每一个像素点的权值
    ! i, M# w$ l) `, D: \            w = exp(-SDist/(2*Sigma^2));
    # \0 z% Y) @$ o! g# k6 p            % 得到相应的噪声点
    " v6 p8 P/ h' y) S! s( K# ?$ k; r  ]            v = PW((WSH+1+dx)WSH+dx+Height),(WSH+1+dy)WSH+dy+Width));6 i- u, \4 W2 V5 }
                % 更新去噪图像矩阵
    1 L9 ~1 g; ?* @1 n3 }            u = u+w.*v;* A6 ]/ W, z* z. e- m+ a
                % 更新权值去噪图像矩阵7 u( h$ [' L" b& s( q& P! U
                M = max(M,w);" ?" o/ W. N) R# T, z
                % 更新叠加权值 accumlated weights* F( `" B0 y' t. U+ B3 ?, ^' Z
                Z = Z+w;
    ! }$ B, ^* I% ]5 m; u' E        end
    : f& [; f" a. Z3 |/ N. |    end
    $ {$ X' s8 F& B$ N) z# W* oend
    / j' w" I3 C2 V& z% 重构图像        9 W' R( p+ @1 X! g, e+ ?! C. B& i6 Q5 D% L
    f = 1;
    & P6 G7 Z( e2 \. ku = u+f*M.*Nimg;
    # P; {* n/ r4 G- e8 q& g8 X/ qu = u./(Z+f*M);
    1 ]6 Z% C+ j: `- l4 ^DeNimg = u; % 重构去噪图像
    7 C6 t4 D& [  o9 |: p" ^, n$ A) K/ H0 s
    function Sd = integral_img(v,dx,dy)
    1 D# f% J3 r0 i% 根据平方差,插值图像7 d  `3 X1 c+ Z7 F+ ^
    % 变换计算:tx = vx+dx; ty = vy+dy0 C, O& W" E" y0 P# r
    t = img_Shift(v,dx,dy);# c+ L! |% A9 S' g: A# h) q
    % 平方差图像9 b; x/ W6 d6 I4 e2 ?& p
    diff = (v-t).^2;
    0 ]& D$ j6 l& R& V; d, K% 沿行插值, l3 B3 M! P) z4 v& x- e1 a% W% a  |
    Sd = cumsum(diff,1);  % 行叠加
    * }9 D, g9 C! C  v  E6 \% 沿列插值  [4 L7 l% v9 ~0 k2 C1 T
    Sd = cumsum(Sd,2);    % 列叠加
    9 G3 _) z: ~0 D5 P8 i2 ~0 Z  U1 [- X. S. L" f2 Q
    function t = img_Shift(v,dx,dy): f: E' ?( r6 f2 s; i4 x
    % 在xy坐标系下,进行图像变换操作
    & v% F7 h1 F& d0 |, r" Q0 qt = zeros(size(v));5 Y1 F$ S3 X! M9 K8 \
    type = (dx>0)*2+(dy>0);% b1 _; A6 D; ^& U: E
    switch type
    7 h  t% C! }; O. `- P6 k2 q    case 0 % dx<0,dy<0: 向右下方移动0 @4 ^$ {5 Z1 R* j  _9 E# y
            t(-dx+1:end,-dy+1:end) = v(1:end+dx,1:end+dy);. F0 z1 S7 z- E. ?
        case 1 % dx<0,dy>0: 向左下方移动
    2 D( g2 E5 b# ]+ Q; E" p        t(-dx+1:end,1:end-dy) = v(1:end+dx,dy+1:end);" h7 x# Q8 u5 @* z! F# n( u
        case 2 % dx>0,dy<0: 向右上方移动2 [" j2 Z7 }$ Z0 N: P) Z4 Q- {
            t(1:end-dx,-dy+1:end) = v(dx+1:end,1:end+dy);! c, w. h* S$ ^4 ]
        case 3 % dx>0,dy>0: 向左上方移动) P+ @2 m8 T! `- Y" ~* {7 D, U
            t(1:end-dx,1:end-dy) = v(dx+1:end,dy+1:end);
    . V7 x- K2 W0 m6 G8 @* y) Xend
    . O% u; P' ^& X8 S- d" A: m# n3 W6 i( w
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-15 04:22 , Processed in 0.125000 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表