一些滤波操作1403:图像处理基础部分
来源:互联网 发布:excel2003软件官方下载 编辑:程序博客网 时间:2024/05/02 02:25
原型说明:
包含的h头文件
#define WHITE 255#define BLACK 0#include<stdio.h>#include<malloc.h>int medfilt5(unsigned char *imagein,unsigned char *imageout, int size[2]);int iminflate(unsigned char *imagein,int str[25],unsigned char *imageout,int size[2]);int imbrim(unsigned char *imagein,unsigned char *imageout,int threshold,int size[2]);
源码
#include"imft.h"int medfilt5(unsigned char *imagein,unsigned char *imageout, int size[2]){int i,j,m,n;char temp;char nerbour[25];for(i = 2; i < size[1] - 2; i ++ ){for(j = 2; j < size[0] - 2; j++ ){nerbour[0] = *(imagein + (i-2) * size[0] + j-2 );nerbour[1] = *(imagein + (i-2) * size[0] + j-1 );nerbour[2] = *(imagein + (i-2) * size[0] + j );nerbour[3] = *(imagein + (i-2) * size[0] + j+1 );nerbour[4] = *(imagein + (i-2) * size[0] + j+2 );nerbour[5] = *(imagein + (i-1) * size[0] + j-2 );nerbour[6] = *(imagein + (i-1) * size[0] + j-1 );nerbour[7] = *(imagein + (i-1) * size[0] + j );nerbour[8] = *(imagein + (i-1) * size[0] + j+1 );nerbour[9] = *(imagein + (i-1) * size[0] + j+2 );nerbour[10] = *(imagein + (i) * size[0] + j-2 );nerbour[11] = *(imagein + (i) * size[0] + j-1 );nerbour[12] = *(imagein + (i) * size[0] + j ); nerbour[13] = *(imagein + (i) * size[0] + j+1 );nerbour[14] = *(imagein + (i) * size[0] + j+2 );nerbour[15] = *(imagein + (i+1) * size[0] + j-2 );nerbour[16] = *(imagein + (i+1) * size[0] + j-1 );nerbour[17] = *(imagein + (i+1) * size[0] + j );nerbour[18] = *(imagein + (i+1) * size[0] + j+1 );nerbour[19] = *(imagein + (i+1) * size[0] + j+2 );nerbour[20] = *(imagein + (i+2) * size[0] + j-2 );nerbour[21] = *(imagein + (i+2) * size[0] + j-1 );nerbour[22] = *(imagein + (i+2) * size[0] + j );nerbour[23] = *(imagein + (i+2) * size[0] + j+1 );nerbour[24] = *(imagein + (i+2) * size[0] + j+2 );for( m = 0; m < 24; m++ ){for( n = 0; n < 24; n++ ){if(nerbour[n] < nerbour[n+1]){temp = nerbour[n+1];nerbour[n+1] = nerbour[n];nerbour[n] = temp;}}}*(imageout + i*size[0] + j) = nerbour[12];}}for(i = 0; i < size[1]; i++){*(imageout+ i*size[0]) = *(imagein + i * size[0] );*(imageout+ i*size[0] + 1) = *(imagein + i * size[0] + 1);*(imageout+ i*size[0] + size[0] - 2) = *(imagein + i * size[0] + size[0] - 2);*(imageout+ i*size[0] + size[0] - 1) = *(imagein + i * size[0] + size[0] - 1);}for(i = 0; i < size[0]; i++){*(imageout+ j) = *(imagein + i);*(imageout+ size[0] + i) = *(imagein + size[0] + i);*(imageout+ size[0] * (size[1] - 2) + i) = *(imagein + (size[1] - 2) * size[0] + i);*(imageout+ size[0] * (size[1] - 1) + i) = *(imagein + (size[1] - 1) * size[0] + i);}return 0;}int iminflate(unsigned char *imagein,int str[25],unsigned char *imageout,int size[2]){int i,j;for(i = 2; i < size[1] - 2; i++){for(j = 2; j < size[0] - 2; j++){if( *(imagein + i * size[0] + j) == WHITE){*(imageout + (i-2) * size[0] + j-2 ) = str[0] * WHITE;*(imageout + (i-2) * size[0] + j-1 ) = str[1] * WHITE;*(imageout + (i-2) * size[0] + j ) = str[2] * WHITE;*(imageout + (i-2) * size[0] + j+1 ) = str[3] * WHITE;*(imageout + (i-2) * size[0] + j+2 ) = str[4] * WHITE;*(imageout + (i-1) * size[0] + j-2 ) = str[5] * WHITE;*(imageout + (i-1) * size[0] + j-1 ) = str[6] * WHITE;*(imageout + (i-1) * size[0] + j ) = str[7] * WHITE;*(imageout + (i-1) * size[0] + j+1 ) = str[8] * WHITE;*(imageout + (i-1) * size[0] + j+2 ) = str[9] * WHITE;*(imageout + (i) * size[0] + j-2 ) = str[10] * WHITE;*(imageout + (i) * size[0] + j-1 ) = str[11] * WHITE;*(imageout + (i) * size[0] + j ) = str[12] * WHITE; *(imageout + (i) * size[0] + j+1 ) = str[13] * WHITE;*(imageout + (i) * size[0] + j+2 ) = str[14] * WHITE;*(imageout + (i+1) * size[0] + j-2 ) = str[15] * WHITE;*(imageout + (i+1) * size[0] + j-1 ) = str[16] * WHITE;*(imageout + (i+1) * size[0] + j ) = str[17] * WHITE;*(imageout + (i+1) * size[0] + j+1 ) = str[18] * WHITE;*(imageout + (i+1) * size[0] + j+2 ) = str[19] * WHITE;*(imageout + (i+2) * size[0] + j-2 ) = str[20] * WHITE;*(imageout + (i+2) * size[0] + j-1 ) = str[21] * WHITE;*(imageout + (i+2) * size[0] + j ) = str[22] * WHITE;*(imageout + (i+2) * size[0] + j+1 ) = str[23] * WHITE;*(imageout + (i+2) * size[0] + j+2 ) = str[24] * WHITE;}}}return 0;}int imbrim(unsigned char *imagein,unsigned char *imageout,int threshold,int size[2]){int i,j,bt;for(i = 1; i < size[1] - 1; i++){for(j = 1; j < size[0] - 1; j++){bt = *(imagein + (i-1) * size[0] + j-1) + *(imagein + (i-1) * size[0] + j) + *(imagein + (i-1) * size[0] + j+1)+*(imagein + i * size[0] + j-1) - 8 * (*(imagein + i * size[0] + j) ) + *(imagein + i * size[0] + j+1)+*(imagein + (i+1) * size[0] + j-1) + *(imagein + (i+1) * size[0] + j) + *(imagein + (i+1) * size[0] + j+1);if( bt >= threshold )*(imageout + i * size[0] + j) = WHITE;else*(imageout + i * size[0] + j) = BLACK;}}for(i = 0; i < size[1]; i++){*(imageout + i * size[0]) = BLACK;*(imageout + i * size[0] + 1) = BLACK;*(imageout + i * size[0] + 2) = BLACK;*(imageout + i * size[0] + size[0] - 1) = BLACK;*(imageout + i * size[0] + size[0] - 2) = BLACK;*(imageout + i * size[0] + size[0] - 3) = BLACK;}for(i = 0; i < size[0]; i++){*(imageout + 0 * size[0] + i) = BLACK;*(imageout + 1 * size[0] + i) = BLACK;*(imageout + 2 * size[0] + i) = BLACK;*(imageout + (size[1] - 1) * size[0] + i) = BLACK;*(imageout + (size[1] - 2) * size[0] + i) = BLACK;*(imageout + (size[1] - 3) * size[0] + i) = BLACK;}return 0;}
0 0
- 一些滤波操作1403:图像处理基础部分
- 【图像处理笔记】空间滤波基础
- 【图像处理笔记】空间滤波基础
- 图像处理-滤波技术
- 图像处理--中值滤波
- 图像处理:均值滤波
- [matlab 图像处理] 滤波
- 遥感图像滤波处理
- 【图像处理】滤波
- 图像处理自适应滤波
- 图像滤波处理对比
- 图像滤波基础
- OpenCV2:图像滤波基础
- 图像滤波基础一
- 图像处理线性滤波(基础算子、卷积、拉普拉斯)
- 图像导向滤波操作
- 计算机视觉、图像处理中常见的滤波操作
- opencv基础操作及图像的卷积与滤波
- O(1)空间内实现矩阵转置
- 星际穿越
- java的ThreadLocal简介和示例
- VM下安装Centos 出现的错误 RAM not enough
- 线程同步辅助类
- 一些滤波操作1403:图像处理基础部分
- 荷兰国旗
- 【cocos2dx】对cocos2d 之autorelease\ratain\release的理解
- 2.1 Java程序的构成
- UVa 10129 - Play on Words(DFS判连通+欧拉回路)
- Android 3D 实验总结
- windbg 操作整理 : search, modify, save
- Android中的文件读写全面总结
- 奇偶调序