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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
% 沿行插值
5 \4 e! b! {5 x8 W' q- sSd = cumsum(diff,1);  % 行叠加9 E# J4 v/ k) R9 X7 p
% 沿列插值
# X- J$ z$ a) f4 h* vSd = cumsum(Sd,2);    % 列叠加
, b+ j  ]+ Z, v& i, A3 W4 r为什么要进行叠加?, t: x& H3 \8 [0 \4 Y
还有这一步也不是很明白,怎么就得到每个像素点的权值了0 `+ P1 U0 V% C& v4 H; @
            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);( A. Y. ~% f: j1 @' @8 e) C
  • TA的每日心情

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

    [LV.1]初来乍到

    3#
    发表于 2020-8-28 16:00 | 只看该作者
    分享这个源代码,应该有用6 c3 K6 _1 E& J. S- |8 j
      a- N, W- P5 h; \" d1 g; Y8 m
    function DeNimg = Non_Local_Means(Nimg,PSH,WSH,Sigma)
    9 L8 T# e7 M) y; l$ ^4 h4 q% Non_Local_Means滤波器: H, c" h- d  }- N' L; _) G0 a
    %函数输入: * g3 N! j& K0 y/ e1 r+ ]
    %         Nimg:  输入的图像矩阵 + 带噪声的0 `' @1 M% h; k
    %         PSH:  扩展窗尺寸大小! {. J4 \! ]6 w  u; w
    %         WSH: 窗尺寸大小
    7 u1 b9 D% [% N5 S/ F  g7 o# Z! c9 F%         Sigma:方差
    5 z8 j4 U+ |, `2 v%函数输出: 7 e4 _* p  b! X+ ?  d6 a
    %         DeNimg: 重构滤波图像# M5 `& ~0 N' G1 p
    : x8 j( m+ G+ Y  @: t3 ^
    if ~isa(Nimg,'double'): l' J. J/ ~6 Z+ h7 H6 h( f
        Nimg = double(Nimg)/255;
    " U- \' l# G% O0 Fend
    * A! e( t" j% e" o& J$ S+ U7 k! k1 L9 c$ ]# W& ^$ ]8 C
    % 图像维数. v2 \+ r/ x% o7 y* K
    [Height,Width] = size(Nimg);
    / ~4 o+ k  q. r4 g8 {% _+ Eu = zeros(Height,Width); % 初始化去噪图像矩阵% }' d  b' K# g0 j
    M = u; % 初始化权值矩阵4 U; m& H* O% S" x) o9 v
    Z = M; % 初始化叠加权值 accumlated weights
    ) _. I5 V$ {: v: h/ U% 避免边界效应
    & y4 w) b& r. ?" D" _PP = padarray(Nimg,[PSH,PSH],'symmetric','both');
    ! v$ g! l6 U2 X: rPW = padarray(Nimg,[WSH,WSH],'symmetric','both');
    & Z" Z+ \" ?) t5 \' ]. ~% padarray使用
    6 Y. G8 o' U( ~; N4 x7 v% A =
    + q/ p7 K" d" C2 m$ q%      1     3     4
    " s, `6 \0 A0 {6 F1 P%      2     3     4
    - W1 Q6 o! e- r1 N! {%      3     4     53 N0 F% v( }4 R
    % B = padarray(A, 2 * [1 1], 0, 'both')- ?6 ]. Y  D8 o8 B* M8 X% x: J
    %      0     0     0     0     0     0     0
    9 b# f1 w+ N4 K6 s9 I%      0     0     0     0     0     0     0$ Z" E  E+ |- o9 y, V$ w" m  @  r
    %      0     0     1     3     4     0     0, \7 N; X$ v' n
    %      0     0     2     3     4     0     0
    8 E* D) {3 ?0 D/ J6 Y9 J4 i) k%      0     0     3     4     5     0     0
    2 A( I/ e/ c+ Q* e* A' r%      0     0     0     0     0     0     0( R0 C2 N1 I( L! J! B2 y0 C
    %      0     0     0     0     0     0     0
    & N! a3 e) N7 C7 J% 主循环% q' q) j% D/ ?6 y. W
    for dx = -WSH:WSH
    6 z& G6 u/ I( k, n& N    for dy = -WSH:WSH7 M8 C; G/ y5 _* g0 j: e+ {2 h2 f
            if dx ~= 0 || dy ~= 0
    . {. B1 G# h9 _( O! B. U/ Q0 _            Sd = integral_img(PP,dx,dy);  % 插值图像
    2 \+ ~8 Y' X% C; r+ p- Z            % 获取对应像素点的平方差矩阵
    6 y1 p5 z4 U# I6 h3 b. A* r            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);      
    5 [( [; w/ N+ T# I$ K% L            % 计算每一个像素点的权值* f. M, I) b) J6 Q2 B& R* ]; A
                w = exp(-SDist/(2*Sigma^2));7 a% W+ G- I6 t: l
                % 得到相应的噪声点( E. x8 T- J0 ?- k+ O
                v = PW((WSH+1+dx)WSH+dx+Height),(WSH+1+dy)WSH+dy+Width));
    3 d" C/ Z  ]: X2 u            % 更新去噪图像矩阵
    8 l, \# \) X1 t! ~, ^& I- D            u = u+w.*v;
    2 E# B- i4 F& {. m: k  V            % 更新权值去噪图像矩阵, }# w6 M3 E! `/ j! |4 d. J. r3 P
                M = max(M,w);! L& {7 w: ?/ t1 }
                % 更新叠加权值 accumlated weights
    , ^0 W3 U9 b) b            Z = Z+w;4 {4 ?" T% a9 H6 [! i* |, T
            end- W% w0 L8 s1 _, I! @. s) H
        end
      y8 n& J( H0 A9 F! ?2 |7 y- Eend# \% ]9 h0 M" |6 s, Z
    % 重构图像        - L# B* O1 U+ q* @3 M1 \* Q9 Q
    f = 1;
    1 e( H9 ^7 R( r) j, l8 R2 x8 eu = u+f*M.*Nimg;) U3 i" a0 d. V) e2 t/ z
    u = u./(Z+f*M);
    : I. s8 W+ I. T% V3 f2 ?DeNimg = u; % 重构去噪图像
    / h! L& L  J6 u, [+ r/ |( p( A9 t# W. ~; {6 y
    function Sd = integral_img(v,dx,dy)3 C  p4 X* F( t" {
    % 根据平方差,插值图像
    % {* ?# ~, q! R! K* M* l9 D% 变换计算:tx = vx+dx; ty = vy+dy9 b+ Z6 A* x7 P  R: M
    t = img_Shift(v,dx,dy);' c- ?* X7 @- I% g- \
    % 平方差图像! ^5 L6 G# C/ \  i+ I
    diff = (v-t).^2;, X. ^2 Z; z3 o/ H- A3 y! w1 f; t
    % 沿行插值
    8 Y1 G: \4 q- V# w% E; F2 O( sSd = cumsum(diff,1);  % 行叠加; F) m# k' }* @3 `
    % 沿列插值
    7 s% @& w2 ~/ ^* \' x4 [4 T2 YSd = cumsum(Sd,2);    % 列叠加0 K& \" `; r3 f% [7 k

    ) w' z7 x2 X, S% B& h1 W  afunction t = img_Shift(v,dx,dy)
    / ~( P6 t+ k  T$ }* J% 在xy坐标系下,进行图像变换操作! H- M; u7 O. i( T7 ]6 F$ E' U
    t = zeros(size(v));/ M6 B: B! g  P' W* `, L
    type = (dx>0)*2+(dy>0);
    9 K, t; y! w9 _9 Gswitch type
    & u, q" K- L& ]6 ]. V2 F8 r    case 0 % dx<0,dy<0: 向右下方移动
    3 `. g& I  M2 `$ x  r& w; ]  ?' q        t(-dx+1:end,-dy+1:end) = v(1:end+dx,1:end+dy);, l1 ?" B! p* R" L$ \5 X* Z$ Q
        case 1 % dx<0,dy>0: 向左下方移动
    / g1 |  G$ z" Q& W* A9 V        t(-dx+1:end,1:end-dy) = v(1:end+dx,dy+1:end);
    * a! K) q) t, c( s. h/ M    case 2 % dx>0,dy<0: 向右上方移动
    . Z, R8 g7 V/ L( P* {        t(1:end-dx,-dy+1:end) = v(dx+1:end,1:end+dy);
    9 s% V  v1 O& d" [( r( Y" `$ I    case 3 % dx>0,dy>0: 向左上方移动
    " K2 u/ f! t. S        t(1:end-dx,1:end-dy) = v(dx+1:end,dy+1:end);
    2 e& m; t  |) |5 S, K  Jend
    2 D  f" d+ B9 q- u5 A
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 17:08 , Processed in 0.218750 second(s), 24 queries , Gzip On.

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

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

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