資源簡(jiǎn)介
圖像去噪,里面包括了中值濾波、均值濾波、混合濾波等代碼,還考慮到硬件便于實(shí)現(xiàn),進(jìn)行了字節(jié)對(duì)齊,效果不錯(cuò)的

代碼片段和文件信息
//--==?Global?Define?==--
#include
#include
#include
#include
#include?“BmpRW.h“
using?namespace?std;
//--==?Struct?Declaration?==--
struct?PIX?{
unsigned?short?r;
unsigned?short?g;
unsigned?short?b;
};
PIX??**pix;
PIX??**pix_new;
//--==?Variable?Declaration?==--
int?height;??//?The?Input?Picture?Height
int?width;???//?The?Input?Picture?Width
int?type_in;
PIX?median(PIX*?elements?int?width);
void?hybridMedianFilter(int?height?int?width?PIX?**pix?PIX?**pix_new);
void?medianFilter(int?height?int?width?PIX?**pix?PIX?**pix_new);
void?meanFilter(int?height?int?width?PIX?**pix?PIX?**pix_new);
void?sobel_edge_detect(int?height?int?width?PIX?**pix?PIX?**pix_new);
PIX?getPix(PIX?**pix?int?row?int?col);
unsigned?short?GetPix(PIX?**pix?int?rowint?colint?rgb);
short?abs(short?a);
void?main(int?argc?char*?argv[])
{
int?ij;
int?image_size;???//The?multiple?of?height?and?width
????int?biSizeImage;??//The?value?get?from?the?picture
? int?left;
int?offset;
BITMAPFILEHEADER?*pbmpfh; //?bmp文件頭指針
BITMAPINFOHEADER?*pbmpi; //?bmp文件信息頭指針
unsigned?char????*pbitstr; //?bmp文件數(shù)據(jù)指針
?
//?將bmp文件頭文件讀入*pbmpfh
#if?0
FILE?*rfile?=?fopen(“./checkResults/pic_in.bmp“?“rb+“);
????FILE?*wfile?=?fopen(“./checkResults/pic_out.bmp““wb+“);
#endif
#if?1
FILE?*rfile?=?fopen(“./checkResults/lena_225x225.bmp“?“rb+“);
????FILE?*wfile?=?fopen(“./checkResults/lena_225x225_out.bmp““wb+“);
#endif
#if?0
FILE?*rfile?=?fopen(“./checkResults/lena_225x225_F.bmp“?“rb+“);
????FILE?*wfile?=?fopen(“./checkResults/lena_225x225_F_out.bmp““wb+“);
#endif
#if?0
FILE?*rfile?=?fopen(“./checkResults/lena_263x192.bmp“?“rb+“);
????FILE?*wfile?=?fopen(“./checkResults/lena_263x192_out.bmp““wb+“);
#endif
pbmpfh?=?(BITMAPFILEHEADER*)?calloc(1?sizeof(BITMAPFILEHEADER));
if?(!pbmpfh)?{
printf(“Error:?pbmpfh?have?not?enough?memory!“);
}
fseek(rfilesizeof(short)SEEK_SET);
fread(pbmpfhsizeof(BITMAPFILEHEADER)1rfile);
//?將bmp文件信息頭文件讀入*pbmpi
pbmpi?=?(BITMAPINFOHEADER*)?calloc(1?sizeof(BITMAPINFOHEADER));
if?(!pbmpi)?{
printf(“Error:?pbmpi?have?not?enough?memory!“);
}
fseek(rfilesizeof(BITMAPFILEHEADER)+sizeof(short)SEEK_SET);
fread(pbmpisizeof(BITMAPINFOHEADER)1rfile);
//?將bmp文件數(shù)據(jù)讀入*pbitstr
width??=?pbmpi->biWidth;
height?=?pbmpi->biHeight;
image_size?=?height?*width;
????biSizeImage?=?pbmpi->biSizeImage;
pbitstr?=?(unsigned?char*)?calloc(biSizeImage?sizeof(char));
if?(!pbitstr)?{
printf(“Error:?pbitstr?have?not?enough?memory!“);
}
fseek(rfilepbmpfh->bfOffBitsSEEK_SET);
fread(pbitstr?biSizeImage?1?rfile);
fclose(rfile);
????//?生成RGB的二維PIX數(shù)組
PIX?**pix?=?new?PIX*[height];
PIX?**pix_new?=?new?PIX*[height];
for(i=0;?i pix[i]?=?new?PIX[width];
pix_new[i]?=?new?PIX[width];
}
????//?將BMP圖像讀入數(shù)組并考慮行沿邊4字節(jié)對(duì)齊
offset?=?0;
left=?3?*width?%4;
for(i=0;?i ????????fo
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1660??2011-06-10?22:48??MeanMedianFilterBack\BmpRW.h
?????文件?????152154??2013-06-25?00:40??MeanMedianFilterBack\checkResults\lena_225x225.bmp
?????文件?????152154??2013-06-25?00:41??MeanMedianFilterBack\checkResults\lena_225x225_F.bmp
?????文件?????152154??2013-06-29?00:07??MeanMedianFilterBack\checkResults\lena_225x225_out.bmp
?????文件?????152118??2013-06-25?00:40??MeanMedianFilterBack\checkResults\lena_263x192.bmp
?????文件??????27702??2011-06-10?22:48??MeanMedianFilterBack\checkResults\pic_in.bmp
?????文件??????27702??2013-06-28?20:13??MeanMedianFilterBack\checkResults\pic_out.bmp
?????文件????????184??2011-06-10?22:48??MeanMedianFilterBack\clean.bat
?????文件????????602??2013-06-29?00:07??MeanMedianFilterBack\Debug\cl.command.1.tlog
?????文件???????9088??2013-06-29?00:07??MeanMedianFilterBack\Debug\CL.read.1.tlog
?????文件????????264??2013-06-29?00:07??MeanMedianFilterBack\Debug\CL.write.1.tlog
?????文件??????44544??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.exe
?????文件????????406??2013-06-24?16:09??MeanMedianFilterBack\Debug\EDT3.exe.em
?????文件????????472??2013-06-24?16:09??MeanMedianFilterBack\Debug\EDT3.exe.em
?????文件????????381??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.exe.intermediate.manifest
?????文件?????646788??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.ilk
?????文件?????????56??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.lastbuildstate
?????文件???????3686??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.log
?????文件?????666624??2013-06-29?00:07??MeanMedianFilterBack\Debug\EDT3.pdb
?????文件????????198??2013-06-24?16:09??MeanMedianFilterBack\Debug\EDT3_manifest.rc
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
?????文件??????????2??2013-06-29?00:07??MeanMedianFilterBack\Debug\li
............此處省略37個(gè)文件信息
評(píng)論
共有 條評(píng)論