声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4590|回复: 40

[编程技巧] 中值滤波的问题

[复制链接]
发表于 2007-4-18 09:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我的是车型自动识别,哪位有更好的去燥程序 可以分享一下不?

[ 本帖最后由 eight 于 2007-4-20 16:47 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2007-4-18 10:41 | 显示全部楼层
原帖由 程序255 于 2007-4-18 09:11 发表
我的是车型自动识别 ,有更好的去燥程序 可以分享一下不



中值滤波函数 median:


  1. >> x=[0,6,13;11,4,20]
  2. x =
  3.      0     6    13
  4.     11     4    20
  5. >> median(x,2)
  6. ans =
  7.      6
  8.     11
复制代码
 楼主| 发表于 2007-4-18 23:16 | 显示全部楼层

我的执行不下去

J = hw7_b(dd, 3*3);

figure,imshow(~J);

函数的程序如下 :
  function [B] = hw7_b(file_name, block_size)

EE 8541 HW 1 问题#7b 执行中间过滤器在灰色图象由file_name 给。在大小块的工作block_size x block_size (3x3 、5x5, 9x9) 。 我们假设block_size 是奇怪的。



A = imread(file_name);
[m,n] = size(A); 我们需要能应用中间过滤器在界限映像点。 % 假设图象有Neumann 边界条件。 % 最容易的方式处理这将设定有的矩阵A2 % 原始的图象A 在中心和拷贝毗邻 % 映像点价值在边缘附近。
k = floor(block_size/2); 多远我们需要扩大疆界
A2 = zeros(m+2*k,n+2*k);
A2(k+1:m+k,k+1:n+k) = A; 原始的图象在中心。 延伸疆界映像点。 首先处理4 个角落。

A2(1:k,1:k) = A(1,1); 上部左角落
A2(1:k,n+k+1:n+2*k) = A(1,n);  右上角
A2(m+k+1:m+2*k,n+k+1:n+2*k) = A(m,n); 右下角
A2(m+k+1:m+2*k,1:k) = A(m,1); 左下角落。
处理边, 我们需要复制1 row/column 一次。
for i = 1:k
A2(i,k+1:n+k) = A(1,1:n); 上部。 。  
A2(k+1:m+k,n+k+i) = A(1:m,n); 权利
A2(m+k+i,k+1:n+k) = A(m,1:n); 更低。
A2(k+1:m+k,i) = A(1:m,1); 左。
end;
翻译结果
向形式矩阵B 应用中间过滤器。



B=zeros(m,n);
pixel_block = zeros(1,block_size^2);
for i = 1:m
for j = 1:n
确定映像点块
k = floor(block_size/2);
pixel_block = reshape(A2(i:i+2*k,j:j+2*k),block_size^2,1);

发现中点没有使用中间作用
sorted_block = sort(pixel_block);
median_position = ceil(block_size^2 / 2);
block_median = sorted_block (median_position);

B(i,j) = block_median;
end;
end;

B = uint8(B); 为图画目的。 这是个中值滤拨的函数,你看我哪用的不对 ,你说的那个median(x,2)我怎么改下才能用上 我的要处理的是一幅很大的图象

[ 本帖最后由 eight 于 2007-4-18 23:48 编辑 ]
发表于 2007-4-18 23:53 | 显示全部楼层
原帖由 程序255 于 2007-4-18 23:16 发表
J = hw7_b(dd, 3*3);

figure,imshow(~J);

函数的程序如下 :
  function  = hw7_b(file_name, block_size)

EE 8541 HW 1 问题#7b 执行中间过滤器在灰色图象由file_name 给。在大小块的工作block_size ...



median 函数你看看我举的例子就知道如何使用。另外,你的程序太复杂,我精力有限,无法帮你细看,而且你没有提供数据文件,我无法运行。请参阅置顶贴:聚宝盆 把具体出错代码、出错信息贴上来,要不你重新编辑自己的帖子,把图片传上来

[ 本帖最后由 eight 于 2007-4-18 23:56 编辑 ]
 楼主| 发表于 2007-4-19 09:57 | 显示全部楼层

急救!!!!!处理还不如不处理

大家 看看 我的两幅图 第一幅 是减去背景后的二值图 第二幅是中值滤波去噪后 我想保留汽车顶部那完美曲线 ,高手指点下怎样才能把顶部的曲线连贯起来  我是没辙拉

{EBB596A1-61C7-4E8C-819B-36D64906C273}0.jpg

{C5676F4D-464C-4C40-810C-9CAB3E4D41D5}0.jpg

[ 本帖最后由 eight 于 2007-4-19 10:15 编辑 ]
 楼主| 发表于 2007-4-19 11:02 | 显示全部楼层
我是新手 以后会注意的 给你添麻烦了
 楼主| 发表于 2007-4-20 10:13 | 显示全部楼层

图象处理高手给个建议吧 能适用大多情况的方案

大侠 看看 车的右上部分 那些 不连续的线条 怎么能让它连续了  我处理的时候 当噪声给抹掉 了 {70D71BAE-775B-4DB8-8354-26443244FB5A}0.jpg
 楼主| 发表于 2007-4-20 16:21 | 显示全部楼层

eight看看是怎么回事

A=imread('1.tif');
I=rgb2gray(A);


B=imread('2.tif');
J=rgb2gray(B);

C=imsubtract(A,B);
imshow(C);
D=medfilt2(C,[5 5]);
figure;
imshow(D);


错误提示:??? Error using ==> images\private\checkinput>check_attributes
Function ORDFILT2 expected its first input argument, A,
to be two-dimensional.

Error in ==> images\private\checkinput at 37
check_attributes(A, attributes, function_name, variable_name, ...

Error in ==> ordfilt2>ParseInputs at 135
  checkinput(A, {'numeric','logical'}, {'2d','real'}, mfilename, 'A', 1);

Error in ==> ordfilt2 at 51
[A,order,domain,s,padopt,msg] = ParseInputs(varargin{:});

Error in ==> medfilt2 at 53
    b = ordfilt2(a, order, domain, padopt);

Error in ==> zhuxiaoxia at 10
D=medfilt2(C,[5 5]);
发表于 2007-4-20 16:45 | 显示全部楼层
C=imsubtract(A,B);


改为:

  1. C=imsubtract(I,J);
复制代码


试试。估计你的原图是RGB的(对应的图象数据是三维矩阵),但是 medfilt2 函数的输入只能是二维矩阵
 楼主| 发表于 2007-4-20 18:27 | 显示全部楼层
:victory:  万能啊 哈哈
 楼主| 发表于 2007-4-20 18:32 | 显示全部楼层

大侠 出个主意吧

{70D71BAE-775B-4DB8-8354-26443244FB5A}0.jpg 车子在图中位置,如果车子在其中的位置改变的话 ,有没有什么方法可以把这两个图中车子部分的图象相加而成为一个车子的图象啊
发表于 2007-4-20 18:37 | 显示全部楼层
原帖由 程序255 于 2007-4-20 18:32 发表
24762车子在图中位置,如果车子在其中的位置改变的话 ,有没有什么方法可以把这两个图中车子部分的图象相加而成为一个车子的图象啊



可以考虑通过某些特征来定位,例如质心、轮廓等
 楼主| 发表于 2007-4-20 23:23 | 显示全部楼层

有眉目了 给几个函数 或者说我应该看什么书

真是太感谢你了
 楼主| 发表于 2007-4-21 22:48 | 显示全部楼层

eight 到底有没有这方面的函数啊

:'( 急 急 急 :'(
发表于 2007-4-21 23:12 | 显示全部楼层
原帖由 程序255 于 2007-4-21 22:48 发表
:'( 急 急 急 :'(


看看matlab关于图像处理方面的书籍吧,或者找找matlab的帮助(Image Processing Toolbox),我也不太懂


ps:质心的程序不难写吧?求出后,把两者平移到同一个位置不就ok了吗
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-9 06:47 , Processed in 0.207271 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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