第1关:邻域平均法
#include "BMP.h"
BMP_Image* MeanFilter(BMP_Image* Image_In)
{
BMP_Image* Image_MeanFilter;
Image_MeanFilter = (BMP_Image*)malloc(sizeof(BMP_Image));
Image_MeanFilter->width = Image_In->width -2;
Image_MeanFilter->height = Image_In->height -2;
Image_MeanFilter->biBitCount = 8;
Image_MeanFilter->imageRgbQuad = (BMP_RgbQuad*)malloc(sizeof(BMP_RgbQuad)*256);
Image_MeanFilter->imageData = (unsigned char*)malloc((Image_In->height-2)*(Image_In->width-2));
int i;
for(i=0;i<256;i++)
{
Image_MeanFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MeanFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MeanFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MeanFilter->imageRgbQuad[i].rgbReserved = 0;
Image_MeanFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MeanFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MeanFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MeanFilter->imageRgbQuad[i].rgbReserved = 0;
Image_MeanFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MeanFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MeanFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MeanFilter->imageRgbQuad[i].rgbReserved = 0;
}
//??2¨2ù×÷ê±2?????±??μ£?3*3?ù?μ??2¨μ??°?áê1í?????éù2DD2áD
//?ú??2¨ê±ó|′óμú?tDDμú?táD?aê?μ?μ1êyμú?tDDμú?táD?áê?
int j,index1,index2,index3,k=0,tmp;
for (i=1; i<Image_In->height-1; i++)
{
for (j=1; j<Image_In->width-1; j++)
{
/********* Begin *********/
index1 = (i-1)*Image_In->width+j;
index2 = i*Image_In->width+j;
index3 = (i+1)*Image_In->width+j;
tmp = (Image_In->imageData[index1-1] + Image_In->imageData[index1] + Image_In->imageData[index1+1] + Image_In->imageData[index2-1] + Image_In->imageData[index2] + Image_In->imageData[index2+1] +
Image_In->imageData[index3-1] + Image_In->imageData[index3] + Image_In->imageData[index3+1])/9;
Image_MeanFilter->imageData[k] = tmp;
k++;
/********* End *********/
}
}
return Image_MeanFilter;
}
第2关:中值滤波法(3*3)
#include "BMP.h"
int Med(int a,int b,int c)
{
int t;
if(a > b) {t = a; a=b; b=t;}
if(a > c) {t = a; a=c; c=t;}
if(b > c) {t = b; b=c; c=t;}
return b;
}
BMP_Image* MedFilter(BMP_Image* Image_In)
{
BMP_Image* Image_MedFilter;
Image_MedFilter = (BMP_Image*)malloc(sizeof(BMP_Image));
Image_MedFilter->width = Image_In->width -2;
Image_MedFilter->height = Image_In->height -2;
Image_MedFilter->biBitCount = 8;
Image_MedFilter->imageRgbQuad = (BMP_RgbQuad*)malloc(sizeof(BMP_RgbQuad)*256);
Image_MedFilter->imageData = (unsigned char*)malloc((Image_In->height-2)*(Image_In->width-2));
int i;
for(i=0;i<256;i++)
{
Image_MedFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter->imageRgbQuad[i].rgbReserved = 0;
Image_MedFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter->imageRgbQuad[i].rgbReserved = 0;
Image_MedFilter->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter->imageRgbQuad[i].rgbReserved = 0;
}
//??2¨2ù×÷ê±2?????±??μ£?3*3?D?μ??2¨μ??°?áê1í?????éù2DD2áD
//?ú??2¨ê±ó|′óμú?tDDμú?táD?aê?μ?μ1êyμú?tDDμú?táD?áê?
int j,index1,index2,index3,k=0;
for (i=1; i<Image_In->height-1; i++)
{
for (j=1; j<Image_In->width-1; j++)
{
/********* Begin *********/
index1=(i-1)*Image_In->width+j;
index2=i*Image_In->width+j;
index3=(i+1)*Image_In->width+j;
int Med1 = Med(Image_In->imageData[index1-1],Image_In->imageData[index1],Image_In->imageData[index1+1]);
int Med2 = Med(Image_In->imageData[index2-1],Image_In->imageData[index2],Image_In->imageData[index2+1]);
int Med3 = Med(Image_In->imageData[index3-1],Image_In->imageData[index3],Image_In->imageData[index3+1]);
int Med4 = Med(Med1,Med2,Med3);
Image_MedFilter->imageData[k] = Med4;
k++;
/********* End *********/
}
}
return Image_MedFilter;
}
第3关:中值滤波法(5*5)
#include "BMP.h"
//èy??êy?ó?D?μ
int ForMed(int a,int b,int c)
{
int t;
if(a > b) {t = a; a=b; b=t;}
if(a > c) {t = a; a=c; c=t;}
if(b > c) {t = b; b=c; c=t;}
return b;
}
BMP_Image* MedFilter1(BMP_Image* Image_In)
{
BMP_Image* Image_MedFilter1;
Image_MedFilter1 = (BMP_Image*)malloc(sizeof(BMP_Image));
Image_MedFilter1->width = Image_In->width -4;
Image_MedFilter1->height = Image_In->height -4;
Image_MedFilter1->biBitCount = 8;
Image_MedFilter1->imageRgbQuad = (BMP_RgbQuad*)malloc(sizeof(BMP_RgbQuad)*256);
Image_MedFilter1->imageData = (unsigned char*)malloc((Image_In->height-4)*(Image_In->width-4));
int i;
for(i=0;i<256;i++)
{
Image_MedFilter1->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter1->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter1->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter1->imageRgbQuad[i].rgbReserved = 0;
Image_MedFilter1->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter1->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter1->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter1->imageRgbQuad[i].rgbReserved = 0;
Image_MedFilter1->imageRgbQuad[i].rgbBlue = Image_In->imageRgbQuad[i].rgbBlue;
Image_MedFilter1->imageRgbQuad[i].rgbGreen = Image_In->imageRgbQuad[i].rgbGreen;
Image_MedFilter1->imageRgbQuad[i].rgbRed = Image_In->imageRgbQuad[i].rgbRed;
Image_MedFilter1->imageRgbQuad[i].rgbReserved = 0;
}
int j,index1,index2,index3,index4,index5,k=0;
//??2¨2ù×÷ê±2?????±??μ£?5*5?D?μ??2¨μ??°?áê1í?????éù4DD4áD
//?ú??2¨ê±ó|′óμúèyDDμúèyáD?aê?μ?μ1êyμúèyDDμúèyáD?áê?
for (i=2; i<Image_In->height-2; i++)
{
for (j=2; j<Image_In->width-2; j++)
{
/********* Begin *********/
index1=(i-2)*Image_In->width+j;
index2=(i-1)*Image_In->width+j;
index3=i*Image_In->width+j;
index4=(i+1)*Image_In->width+j;
index5=(i+2)*Image_In->width+j;
int Med1 = ForMed(Image_In->imageData[index1-1],Image_In->imageData[index1],Image_In->imageData[index1+1]);
int Med2 = ForMed(Image_In->imageData[index2-1],Image_In->imageData[index2],Image_In->imageData[index2+1]);
int Med3 = ForMed(Image_In->imageData[index3-1],Image_In->imageData[index3],Image_In->imageData[index3+1]);
int Med4 = ForMed(Image_In->imageData[index4-1],Image_In->imageData[index4],Image_In->imageData[index4+1]);
int Med5 = ForMed(Image_In->imageData[index5-1],Image_In->imageData[index5],Image_In->imageData[index5+1]);
int Med6= ForMed(Med1,Med2,Med3);
int Med7= ForMed(Med4,Med5,Med6);
Image_MedFilter1->imageData[k] = Med7;
k++;
/********* End *********/
}
}
return Image_MedFilter1;
}
OBJECT ID="agobjOraSession" RUNAT="Server" PROGID="OracleInProcServer.XOraS...
0x01 Mysql Mysql划分:权限 root 普通用户 版本 mysql5.0 mysql5.0 1.1 root权...
先看代码 复制代码 代码如下: div style="position:relative; width:[flash的宽]...
我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求...
本文转载自微信公众号「 jinjunzhu」,作者 jinjunzhu 。转载本文请联系 jinjunz...
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认...
XML/HTML Code 复制内容到剪贴板 input id = username name = username type = t...
1,父传子 子组件中定义 props 字段,类型为数组(如果需要限制字段值类型,也可...
CentOS版本:7.6.1810 3台 JDK版本:1.8.0_191 Zookeeper版本:3.4.10 安装包 链接h...
详解 Spring注解的(ListMap)特殊注入功能 最近接手一个新项目,已经没有原开发...