medianFilter中值滤波

  • b4_374658
    了解作者
  • 113.6KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-04 13:06
    上传日期
中值滤波在数字图像处理中用于平滑图像,滤除噪声
medianFilter.zip
  • medianFilter
  • noiseimage.bmp
    65.1KB
  • medianFilter.dsw
    547B
  • resultimage.bmp
    65.1KB
  • medianFilter.opt
    52.5KB
  • medianFilter.cpp
    2.6KB
  • medianFilter.dsp
    4.2KB
  • medianFilter.plg
    919B
  • medianFilter.ncb
    41KB
内容介绍
#include <windows.h> #include <stdio.h> //读取bmp图像 bool readBmp(const char*bmpFile,unsigned char * &bmpData,BITMAPINFOHEADER& head,RGBQUAD *&pColorTable,BITMAPFILEHEADER &fileHead) { FILE*fp=fopen(bmpFile,"rb"); if(fp==NULL) { printf("Can't open the Image file\n"); return 0; } fread(&fileHead,sizeof(BITMAPFILEHEADER),1,fp); fread(&head,sizeof(BITMAPINFOHEADER),1,fp); int bitcount=head.biBitCount; int linebyte=(head.biWidth *bitcount/8+3)/4*4;//每行字节数 if (bitcount==8) { pColorTable = new RGBQUAD[256]; fread(pColorTable,sizeof(RGBQUAD),256,fp); } bmpData=new unsigned char [ linebyte*head.biHeight]; fread(bmpData,1,linebyte * head.biHeight,fp); fclose(fp); return 1; } //保存结果图像 void saveBmp(const char*resultFile,unsigned char * bmpData,BITMAPINFOHEADER head,RGBQUAD *pColorTable,BITMAPFILEHEADER fileHead) { FILE * fp = fopen(resultFile,"wb"); if(fp == 0) { printf("can't open the result file.\n"); } int lineByte = (head.biWidth*head.biBitCount/8+3)/4*4; fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp); fwrite(&head,sizeof(BITMAPINFOHEADER),1,fp); if(head.biBitCount == 8) fwrite(pColorTable,sizeof(RGBQUAD),256,fp); fwrite(bmpData,head.biHeight* lineByte,1,fp); fclose(fp); } //冒泡排序法 void sort(unsigned char *b, int n) { char temp; for(int i = 0; i < n-1; i++) { for(int j = 0; j < n-i-1; j++) { if(b[j] < b[j+1]) { temp = b[j+1]; b[j+1] = b[j]; b[j] = temp; } } } } //中值滤波 void medianFilter( unsigned char *bmpData,BITMAPINFOHEADER head, unsigned char *result) { unsigned char *a = NULL; int lineByte = (head.biWidth +3)/4*4; for(int i = 1;i < head.biHeight-1; i++) for(int j = 1;j<head.biWidth-1; j++) { a = bmpData + i*lineByte + j; unsigned char aa[] = {*a,*(a-1),*(a+1),*(a+lineByte),*(a+lineByte+1),*(a+lineByte-1), *(a-lineByte),*(a-lineByte+1),*(a-lineByte-1)}; sort(aa, 9); *(result + i*lineByte + j) = aa[4]; } } int main() { char fileName[] = "noiseimage.bmp"; char reslutName[] = "resultimage.bmp"; unsigned char * bmpData = NULL; unsigned char * result = NULL; BITMAPFILEHEADER fileHead; BITMAPINFOHEADER head; RGBQUAD *pColorTable = NULL; readBmp(fileName,bmpData,head,pColorTable,fileHead); int lineByte = (head.biWidth* head.biBitCount/8 +3)/4*4; result = new unsigned char[lineByte * head.biHeight]; memcpy(result,bmpData,lineByte * head.biHeight); medianFilter(bmpData,head,result); saveBmp(reslutName,result,head,pColorTable,fileHead); delete []result; delete []bmpData; delete []pColorTable; return 0; }
评论
    相关推荐
    • 图像处理
      基于MATLAB平台的图像处理程序代码资源
    • 数字图像处理
      HSI RGB LZW 哈弗慢编码,直方图均衡化,累计直方图,灰度映射,腐蚀,膨胀(文件内容:图像处理练习.doc 数字图像处理代码.doc)
    • 数字图像处理
      本书是数字图像处理理论与实践相结合的成功之作,强调理论用于解决工业或科学研究中常见的实际问题。这种与基本概念和数字图像处理的各种实用技术,使读者能用这些技术解决数字图像中的新问题。 全书共22章,1-5章...
    • 数字图像处理
      本书全面系统地讲述了数字图像处理领域中的15大核心话题,包括色彩空间、图像编码、频域变换、图像文件格式、几何变换、灰度变换、图像的增强处理、边缘检测、轮廓跟踪、形态学处理、图像分割、图像的加密与隐藏、...
    • 数字图像处理
      数字图像处理宝典,PDF高清版,因每次上传限制,分为7个部分上传,搜索时搜 “数字图像处理(中午版part#)
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理代码
      这个是图像处理不可多得的源码,是我们做项目时用到的所有技术。涉及到哈夫曼码编码、香农-弗诺编码、伪彩色、滤波、模板匹配 、图像平滑、图像复原、图像显示、特征提取、图像变、运动检测、小波变换、图像分割等...