- 博客(51)
- 资源 (8)
- 收藏
- 关注
原创 一种改进的中值滤波算法(张恒等)
主函数:%1 三种算法比较I=imread('11.png');I=rgb2gray(I);%加入混合噪声%var=100/(255^2);%imnoise中的方差等于实际方差除以灰度级的平方%按照文献设置参数J=imnoise(I,'salt & pepper',0.8);%J=imnoise(J,'gaussian',0,var);%var=0.0015%k1=co
2013-10-29 20:07:02
3888
1
原创 灰度最小方差的均值滤波器
此为灰度最小方差的均值滤波器:在去噪能力上弱于传统的均值、中值滤波,但在保留图像边缘和细节能力方面要强于前者。子函数:%该种方法的基本思想是:先使用模板覆盖图像区域,若像素都属于一个区域,则区域内不含边界,则可以放心平滑去噪(高斯用均值,椒盐用中值);否则像素属于不同部分,即区域含有边界,那我们不平滑去噪,保持边界即可。%编程的思想是:9个模板找出方差最小的那个模板,这个模板覆盖像素
2013-10-29 20:02:21
4107
2
原创 对称邻近均值滤波
子函数代码:%symmetricnearmean.mfunction [y]=symmetricnearmean(x,a,b)y=x;[m,n]=size(x);N=(a-1)/2;M=zeros( 1,2*N*(N+1) );for i=3:m-2 for j=3:n-2 k=1; for i1=1:N for j1=-N:N
2013-10-29 19:58:23
4046
原创 K近邻均值滤波
子函数代码:function[y]=K_neardealnoise(x,a,b)[m,n]=size(x);x=double(x);y=x;k0=floor(a*b/2)+1;for i=2:m-1 for j=2:n-1 %y(i,j)=0; z1=abs(x(i,j)-x(i-1,j+1)); z2=abs(x(i,j)-x(i,j+1));
2013-10-29 19:56:15
8222
原创 一种稳健的自适应图像平滑算法(芮杰等)
平滑算法1:%roburstmedfilt1.mfunction [y]=roburstmedfilt1(x,a,b)x=double(x);y=x;[m,n]=size(x);k=floor(a/2)+1;for i=k:m+1-k for j=k:n+1-k z=zeros(1,4*k^2-4*k); num=1; for
2013-10-29 19:50:51
1553
原创 消除椒盐噪声的改进滤波算法(李双全等)
算法对应的子函数代码:%commonfilt2_1.mfunction[y]=commonfilt2_1(x,a,b)[e f]=size(x);y=x;for i=2:e-1 for j=2:f-1 zmed=median([x(i-1,j+1),x(i,j+1),x(i+1,j+1),x(i-1,j),x(i+1,j),x(i-1,j-1),x(i,j-1),x
2013-10-29 19:39:06
2583
原创 严重椒盐噪声污染图像的非线性滤波算法(董继扬)
新算法对应的子函数:%delseriousnoise.m%有效去除图像中脉冲噪声的新型滤波算法%检测窗口5*5,滤波窗口3*3function [R] = delseriousnoise(x)[e,f]=size(x);Nmax=3; %确定最大的滤波半径,那么滤波窗口或者检测窗口最大为7%下面是边界扩展,图像上下左右各增加Nmax像素z=zeros(e+2*Nmax,f+2
2013-10-29 19:35:43
2119
原创 一种高效快速的高密度椒盐噪声消除算法(吕宗伟等)
新算法对应的子函数:%一种高效快速的高密度椒盐噪声滤除算法%quickdelhighnoise.mfunction [R] = quickdelhighnoise(J)[e,f]=size(J);R=zeros(e,f);Nmax=3; %确定最大的滤波半径,那么滤波窗口最大为7%下面是边界扩展,图像上下左右各增加Nmax像素z=zeros(e+2*Nmax,f+2*Nma
2013-10-29 19:31:17
2604
原创 一种用于抑制椒盐噪声的多窗口中值滤波器(邢藏菊等)
几种算法的比较1)递进开关中值滤波%commonfilt2_1.m%递进开关中值滤波function [R]=commonfilt2_1(x,NR0)[e,f]=size(x);Nmax=2; %确定最大的滤波半径,那么滤波窗口最大为5%下面是边界扩展,图像上下左右各增加Nmax像素z=zeros(e+2*Nmax,f+2*Nmax);%引入一个新矩阵,用以贴上图片
2013-10-29 19:20:23
2071
原创 有效去除图像中脉冲噪声的新型滤波算法(曲延锋等)
%imfledfilt.m%有效去除图像中脉冲噪声的新型滤波算法%检测窗口5*5,滤波窗口3*3function [R] = imfledfilt(x,Noiserate)[e,f]=size(x);Nmax=2; %确定最大的滤波半径,那么滤波窗口或者检测窗口最大为5%下面是边界扩展,图像上下左右各增加Nmax像素z=zeros(e+2*Nmax,f+2*Nmax);%引入一个新矩
2013-10-29 16:32:29
2014
原创 梯度有关的加权滤波器
代码分两部分:1 与梯度有关的加权滤波器,设计了2个:1)自适应加权滤波器 2)倒数加权滤波器2 图像的梯度幅值图像,以及x方向的梯度幅值图像和y方向的梯度幅值图像I=imread('1.png');I=rgb2gray(I);[M,N]=size(I);I=double(I);J=I;%权重因子处理后的图像%k=4;%权重因子系数,数学函数表达式:exp( (-x*x)
2013-10-29 16:28:57
2666
原创 用于图像处理的自适应中值滤波(张旭明等)
基于文章“用于图像处理的自适应中值滤波”的matlab代码如下:%commonfilt2_1.m%一种自适应调整窗口,一种自适应滤波的算法function [y]=commonfilt2_1(x)TD = 9;%判断噪声点所用阈值N1 = 0; %子块1中噪声点的个数N2 = 0; %子块2中噪声点的个数N3 = 0; %子块3中噪声点的个数N4 = 0; %子块4中噪声点
2013-10-29 16:25:05
5826
5
原创 对图像进行中值滤波的几种写法以及基于排序阈值的开关中值滤波算法
自己编写的中值滤波算法和库函数调用的中值滤波算法 psnr值一样,因此不必多虑,放心调用.以下文件:1:自己编写的中值滤波2:库函数中值滤3:极值中值算法:中心像素等于窗口最大值或者最小值,即该点为噪声点的可能性很大,中心点则使用中值代替4:一种基于排序阈值的开关中值滤波方法(秦鹏等):先将窗口内所有像素分成三类:1) 噪声点 2) 平坦区域 3)边缘细节5:极大中值滤波:
2013-10-29 16:17:12
5491
原创 快速排序
快速排序法是一种经常提及,被很多公司喜欢用来考察的排序方法,它的平均时间复杂度为O(nlongn),最差时间复杂度为O(n*n)。/* Note:Your choice is C IDE */#include "stdio.h"void quick_sort(int a[],int n);//函数的声明后要加分号int main(){int i;int a[10];print
2013-10-26 20:44:27
738
原创 图论中的BFS和DFS
其时两种算法还真的不好懂,BFS强调先选择一条路径走完,然后再回到原来的备选路径走,直至结束;DFS强调把所有邻接点遍历完;前者使用堆栈模拟,后者可以用队列模拟。BFS:/* Note:Your choice is C IDE */#include#include#define Max 9#define queueMAX 10typedef struct Bintree{
2013-10-26 20:40:50
1091
原创 矩阵相乘
两个矩阵相乘,其实很简单,但真正写起来,需要你理解其中的细节,公式会被,但程序不一定会写。以此,送给基础薄弱,眼高手低的我们。#include "stdio.h"int main(){int i,j,k;int matrixC[5][6]={0};int matrixA[5][4]={1,5,7,3,3,6,3,9,1,2,8,7,0,3,1,9,3,2,5,4,};
2013-10-26 20:36:09
805
原创 链表反转
#include "stdio.h"#define LEN sizeof(Student)typedef struct student{ int num; float score; struct student *next; }Student,*link;//构造链表的函数 link creat(int n);//打印链表的内容 void print_link(l
2013-10-26 19:32:22
809
原创 队列
使用数组模拟队列:/*==========用数组模拟队列===============*//*起初数组元素全部为0 我们给它入队但数据都为非 0 出队元素确定后 该出队元素设置为 0*/#include "stdio.h"#include "stdlib.h"#include "conio.h"#define maxsize 10int queue[maxsize];int
2013-10-26 19:31:03
694
原创 二叉树的遍历:前序、中序、后序
#include#includetypedef struct Bintree{int data;struct Bintree *lchild;struct Bintree *rchild;}treenode,*b_tree;b_tree root=NULL;/* 函数的声明*/b_tree creat_tree(int n);void print1();void preor
2013-10-26 19:28:48
825
原创 二叉树用数组表示
/*复杂的编程,思考永远是最重要的*/#include "stdio.h"#include "stdlib.h"#include "math.h"int b_tree[20]={0};//int count=0;//因为count不能由开始输入的数据个数直接看出来 ,故我直接用全局 变量方便随时使用 //这段程序我借鉴了链表建立二叉树的方法,值得仔细推敲 void creat_
2013-10-26 19:26:55
2700
原创 归并排序
归并排序:即将一个无序序列分为长度大致相同的2部分,然后对这两部分逐个元素比较,将较小的元素放入相应位置#include "stdio.h"void merge(int a[], int first, int mid, int end, int temp[]){ int i,j,k,m,n; i = first; j = mid + 1; m = mid; n =
2013-10-26 19:25:35
588
原创 老生常谈的“初始化”顺序
#include "iostream"#include "stdlib.h"using namespace std;class base{ private: int m; int n;//先声明哪个变量 就对哪个变量初始化 public: base(int i) { m=n; n=i; }/*****base(int i):n(i),m(n){}写成这
2013-10-26 18:26:33
569
原创 STL排序链表
例子1:#include#include//对字符串操作#include//STL对数据结构中的双向链表类操作using namespace std;int main(){string s;listLS;list::iterator iter;//迭代器while(true){//表面看起来似乎 没用,其实是可控的循环与break联合使用 cout<<"Enter st
2013-10-26 18:24:07
838
原创 含有纯虚函数的例子
#include#includeusing namespace std;class Student//含有纯虚函数的类是抽象类,不能定义对象 {public: Student(int,string,float); virtual void display()const=0;//加了const,display函数包括派生类graduate中的函数皆为纯虚函数,所以graduate不能定
2013-10-26 18:22:17
1633
原创 虚基类的例子
#include#include#includeusing namespace std;class Person//虚基类的作用避免重复继承基类中的元素 ,针对一堆多对一的继承结构 {public: Person(string nam,char s,int a) {name=nam;sex=s;age=a;}protected: string name; char sex
2013-10-26 18:19:24
868
原创 一些简单的析构函数例子
析构函数未被调用情况:#include#includeusing namespace std;class Student{public: Student(int n,char nam[],char s){num=n;name=nam;sex=s;cout} ~Student(){cout}void display()
2013-10-26 18:16:03
1047
原创 类模板(3种)
类模板1:#includeusing namespace std;template//相当于templateclass Compare{ public: Compare(T a, T b); T max(); T min(); private: T x, y;};templateCompare :: Compare(
2013-09-17 15:42:37
572
原创 友元函数(类中的成员函数作为友元函数)
#includeusing namespace std;class Time{ public: Time(int h, int m, int s); friend void display(Time &t);//声明一个友元函数,不属于任何类 private: int hour; int minute; int sec;
2013-09-17 15:31:18
1495
原创 静态数据成员和静态成员函数
静态数据成员:#includeusing namespace std;class Box{ public: Box(int w,int l); int volume(); static int height; int width; int length;};Box::Box(int w,int l){ wi
2013-09-17 15:28:23
731
原创 带参数的构造函数及使用默认参数的构造函数
#includeusing namespace std;class Box{ public: Box(int h,int w,int l); int volume(); private: int height; int width; int length;};Box::Box(int h,int w,int l)
2013-09-17 15:16:28
1717
原创 无参传递及类外使用作用域运算符
一个很简单的例子:#includeusing namespace std;class Time{ public: inline void set_time(); inline void show_time(); private: int hour; int minute; int sec;};int mai
2013-09-17 15:11:26
645
原创 一个简单的c++程序
很简单的一个cpp程序,帮助了解一下cpp的结构:#includeusing namespace std;class Time{ public://这里一定要使用public,不能使用private,否则对象无法调用这些数据 int hour; int minute; int sec; };void set_time(Time &
2013-09-17 14:59:55
641
原创 c++中数据的输入输出形式及数据形式的设置
数据的输入输出,有时也要注意形式,比如强制规定小数点后面几位,一段例子:#include#include#includeusing namespace std;int main(){ double a = 33.0/9; int b = 248; cout<<a<<endl; cout<<setprecision(1)<<a<<endl;//设置精度(不包
2013-09-17 14:52:00
1124
原创 C++中输入字符串总结
c/c++中常用到字符串,输入字符串可以使用:getline,指针,数组等方式。一个简单的例子如下:#include#include#includeusing namespace std;int main(){ char a[10]; cout<<"please input a string :"<<endl; cin.getline(a, 10);//输入的字
2013-09-17 14:44:45
819
转载 二分查找
二分查找:针对排好序的序列,查找其中的某个数字,一段粗略的代码如下:#includevoid search(int a[], int n, int x){ int i; if(a[n/2] == x) { printf("需要查找的数已经查到,放心!\n"); printf("您要查找的数a[%d]=%d", n/2, a[n/2]); }
2013-09-17 14:40:17
618
3
原创 投掷筛子
投筛子,大家都玩过。假设有一个六面(各面数字为1到六)的筛子,由计算机“摇出”某个介于6的随机数字。代码如下:#include#include//含有字符类型转换,rand(),srand(),system()#includeusing namespace std;int randrom(int n){ return rand()%n;//计算机随机获取一个数,再除以n
2013-09-17 14:27:51
1039
原创 递归法反向输出字符串
#include #include #include char string[20];void convert(int n , int N)//n为元素的下标,N为数组的实际长度 { if(n < N) { convert(n+1 , N); printf("%c" ,string[n]); }}int main(){ pr
2013-09-17 14:02:55
2620
原创 求素数
素数:即除了1和其本身外,没有其他的约数,即为素数,又称质数。如1,3,7,11等。常见思路:对于n(假设n不小于2),设变量 i=2 遍历到 n,若中间满足n % i == 0,则n非素数,退出循环;若n小于i(这里也可以不必遍历到n,是sqrt(n)即行)void prime(int n){ int i,j; int count = 0;//计算素数的序号 for(
2013-09-17 10:17:14
1073
1
原创 计算一个简单文件的大小
#include "stdio.h"int main(){ long f; FILE *fp; fp=fopen("C:\\Users\\XXX\\Desktop\\如何进入设计领域.txt","r");//计算“如何进入设计领域.txt”的大小 fseek(fp,0,2);//SEEK_END或者2,表示末尾,指针起初是在文件末尾,偏移量为0,即一直指向文件末尾
2013-09-17 09:34:00
1012
原创 汉诺塔问题
有n个环的汉诺塔问题:void tranf(int n, char a, char b, char c){ if(n == 1) printf("%c=>%c\n",a,c); else { tranf(n-1,a,c,b); tranf(1,a,b,c);//此处使用printf("%c=>%c\n",a,c)也是可以的; 不得不承认熟
2013-09-17 09:29:06
703
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人