24小时热门版块排行榜    

查看: 3869  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yibanxinyu

铜虫 (小有名气)

[交流] 【求助】帮我编个程啊~C语言,C++,Matlab,VB...都行~ 已有4人参与

拜托各位编程高手帮我编个程啊,高金币悬赏哦~是关于图像处理的,用C语言,C++,Matlab,VB等等都行。
  编写处理“K近邻平滑滤波”的程序,原理是:以待处理的像素作为中心,取一个3X3的模板,在模板中选择5个与待处理像素的值最接近的像素,将这5个像素的均值替换原来的像素值。
  举个直观的例子吧,给定3X3的模板如下:
2   2   3
6   8   7                  (6+7+5+6+8)/5=6.4=6(四舍五入)
5   6   8
   最后中心像素值8被6替换。
  编程的时候不要用具体的像素值,用代号(比如说a、b、c......)代替就好了。
  多谢各位高手了,小女感激不尽啊!

[ Last edited by yibanxinyu on 2010-4-25 at 20:37 ]
回复此楼

» 收录本帖的淘帖专辑推荐

学海无涯!

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

雷小雨

银虫 (著名写手)

★ ★ ★
resonant(金币+3):感谢提供:-) 2010-05-02 13:06
yibanxinyu(金币+5):非常感谢~ 2010-05-03 21:18
% K近邻平滑滤波
% input - 输入图像矩阵;n - 模板大小(3,5,7...);k - 近邻数
% output - 滤波处理后的图像矩阵
function output = emuchKNNMeanFilter(input, n, k)
    [row, col] = size(input);
    edgeWidth = floor(n / 2);
    output = zeros(row - edgeWidth * 2, col - edgeWidth * 2);
    for i = 1 + edgeWidth : row - edgeWidth
        for j = 1 + edgeWidth : col - edgeWidth
            mask = input(i - edgeWidth : i + edgeWidth,...
                j - edgeWidth : j + edgeWidth);
            center = input(i, j);
            vertex = Matrix2Vertex(mask);
            neighbour = GetNeighbour(vertex, center, k);
            output(i - 1, j - 1) = mean(neighbour);
        end
    end
end

% 根据输入的向量与中心值取近邻值
% vertex - 输入向量;center - 中心值;k - 近邻数
% neighbour - 近邻值
function neighbour = GetNeighbour(vertex, center, k)
    distance = abs(vertex - center);
    [sortDistance, sortIndex] = sort(distance,1);
    neighbour = vertex(sortIndex(2 : k + 1));
end

% 将矩阵转换为向量
function vertex = Matrix2Vertex(matrix)
    [row, col] = size(matrix);
    vertex = zeros(row * col, 1);
    for i = 1 : row * col
        vertex(i) = matrix(i);
    end
end

思路与7楼一致
调用方法:
将以上代码存为文件emuchKNNMeanFilter.m,在matlab command window中调用。
例如,有矩阵
a =
164        24        196        119        209        51
200        139        53        23        250        244
125        218        11        129        247        86
103        67        39        20        147        38
224        198        183        42        60        84
181        163        33        191        74        29
211        185        56        85        172        197
3        228        116        78        146        202
调用程序进行处理:b = emuchKNNMeanFilter(a, 3, 5)
得到处理后的矩阵
b =
180.6        61.2        101.6        189.6
126.8        40.4        56.4        171.2
92.2        53.8        56.2        121.2
170.8        132.2        45.2        53.4
191.6        105.8        114.8        60
179.8        95        71.4        164.2
8楼2010-05-02 13:03:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

holmescn

金虫 (正式写手)

★ ★
resonant(金币+2):感谢回帖交流:-) 2010-04-26 18:05
yibanxinyu(金币+2): 2010-04-26 20:51
貌似不难。不过有几个问题:
1、总图像有多大。(以估算计算量)
2、怎样选取最接近的像素。
3、为什么只有中心的8被替换?不是6 7 5 6 8这五个像素都被替换?
2楼2010-04-26 17:17:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yibanxinyu

铜虫 (小有名气)

jjdg:直接pm会更快获得答案! 2010-04-27 02:51
引用回帖:
Originally posted by holmescn at 2010-04-26 17:17:30:
貌似不难。不过有几个问题:
1、总图像有多大。(以估算计算量)
2、怎样选取最接近的像素。
3、为什么只有中心的8被替换?不是6 7 5 6 8这五个像素都被替换?

先谢谢你的捧场啊~这个程序只要针对一个3X3的模板来编程就好了,不用管总图像的大小的。至于怎样选取最接近的像素,我的想法是用其他8个像素值与中心像素值作差,然后再将差值排序,从而可以选出最接近的5个值,不知道高手有没有更好地方法呢?最后一个问题嘛,这个方法的原理就是这样的,只替换中心像素值,呵呵~
你能帮我编这个程序吗?感激不尽啊~
3楼2010-04-26 20:49:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★ ★
resonant(金币+1):有心才是最重要的。感谢参与交流。 2010-04-27 12:07
wangen994(金币+2):活动期间额外奖励 2010-04-27 20:39
yibanxinyu(金币+2): 2010-04-27 20:54
我可以尝试一下。不过,有deadline吗?因为我的课程也比较紧。不是每天都能coding阿。

而且我也不是CS专业的……每天coding只能是梦想了……

另外:
1、只考虑3X3矩阵是不是说只给出关键代码就可以了?其他部分你自己实现吗?
还是需要全部的,可以装载某一个图形的。

2、不用给一个GUI界面吧?我可以写一个CUI界面的。这样简单一点。

[ Last edited by holmescn on 2010-4-27 at 12:53 ]
4楼2010-04-27 10:32:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +32 医学老男孩 2026-08-13 74/3700 2026-08-16 21:05 by 医学老男孩
[论文投稿] 岩土工程学报什么时候才能终审完呐 25+3 yeager111 2026-08-10 4/200 2026-08-16 20:42 by tfang
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 6/300 2026-08-16 20:07 by 奶牛小黑
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +9 Ldrop2023 2026-08-13 9/450 2026-08-16 13:24 by wukun_007
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +11 家与远方 2026-08-10 16/800 2026-08-16 10:28 by ray43
[基金申请] filecode +8 cratir 2026-08-14 12/600 2026-08-15 18:08 by zyfgau
[基金申请] 关于Filecode分析方法 +10 majunge000 2026-08-10 13/650 2026-08-15 12:26 by hanpeng972
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] 静等基金结果 +8 gjjjzhong 2026-08-10 21/1050 2026-08-13 17:56 by 且听虎啸
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
信息提示
请填处理意见