图像的膨胀处理
2016-05-30 21:54
176 查看
1.Dilate.h Dilate.c 为图像膨胀的头文件、核心函数
Dilate.h
Dilate.c
2.主程序
getMaxValue();
该函数见链接
http://blog.csdn.net/jsf921942722/article/details/51527155
uCharDataToFloatData();
floatDataToUCharData();
这两个函数见链接
http://blog.csdn.net/jsf921942722/article/details/51526673
3.图像效果
[b]*****************************3通道彩色图原图***********************[/b]
[b]*****************************3通道彩色图膨胀处理后图***********************[/b]
[b]*****************************1通道灰度图原图***********************[/b]
[b]*****************************1通道灰度图膨胀处理后图***********************[/b]
Dilate.h
#ifndef _DILATE_H_ #define _DILATE_H_ #ifdef __cplusplus extern "C" { #endif /* *图像膨胀处理 */ int dilateFunction(float * inData, float * outData, int dataWidth, int dataHeight, int dilateWidth, int dilateHeight, int channels); #ifdef __cplusplus } #endif #endif
Dilate.c
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <memory.h> #include "Dilate.h" #include "myMath.h" int dilateFunction(float * inData, float * outData, int dataWidth, int dataHeight, int dilateWidth, int dilateHeight, int channels){ int widthTemp, heightTemp; int i, j; int m, n, z; float * dataTemp = NULL; int count = 0; float medianData = 0.f; if(channels > 32){ printf("channels is larger.\n"); return -1; } if(dilateWidth % 2 == 0){ widthTemp = dilateWidth / 2 - 1; }else{ widthTemp = dilateWidth / 2; } if(dilateHeight % 2 == 0){ heightTemp = dilateHeight / 2 - 1; }else{ heightTemp = dilateHeight / 2; } dataTemp = (float*)malloc(sizeof(float) * dilateWidth * dilateHeight); for(z = 0; z < channels; z ++){ for(i = 0; i < dataHeight; i ++){ for(j = 0; j < dataWidth; j ++){ memset(dataTemp, 0, sizeof(float) * dilateWidth * dilateHeight); count = 0; medianData = 0.0f; for(m = -heightTemp; m < dilateHeight - heightTemp; m ++){ for(n = -widthTemp; n < dilateWidth - widthTemp; n ++){ if(i + m >= 0 && i + m < dataHeight && j + n >= 0 && j + n < dataWidth){ dataTemp[count] = inData[((i + m) * dataWidth + (j + n)) * channels + z]; count ++; } } } medianData = getMaxValue(dataTemp, count); outData[(i * dataWidth + j) * channels + z] = medianData; } } } free(dataTemp); return 0; }
2.主程序
#include "stdafx.h" #include "Tools.h" #include "Dilate.h" #include <opencv2\opencv.hpp> using namespace cv; int main() { int imageWidth, imageHeight; int channels = 1; Mat mImage = imread("D:\\workSpace\\VSWorkSpace\\ImageProcess\\ImageProcess\\dilateImage.jpg", 1); imshow("srcImage", mImage); float * imageData = NULL; float * imageOutData = NULL; imageWidth = mImage.cols; imageHeight = mImage.rows; channels = mImage.channels(); imageData = (float*)malloc(sizeof(float) * imageWidth * imageHeight * channels); imageOutData = (float*)malloc(sizeof(float) * imageWidth * imageHeight * channels); uCharDataToFloatData(mImage.data, imageData, imageWidth, imageHeight, channels); dilateFunction(imageData, imageOutData, imageWidth, imageHeight, 3, 3, channels); floatDataToUCharData(imageOutData, mImage.data, imageWidth, imageHeight, channels, 1); imshow("dilate Image", mImage); waitKey(0); free(imageData); free(imageOutData); return 0; }
getMaxValue();
该函数见链接
http://blog.csdn.net/jsf921942722/article/details/51527155
uCharDataToFloatData();
floatDataToUCharData();
这两个函数见链接
http://blog.csdn.net/jsf921942722/article/details/51526673
3.图像效果
[b]*****************************3通道彩色图原图***********************[/b]
[b]*****************************3通道彩色图膨胀处理后图***********************[/b]
[b]*****************************1通道灰度图原图***********************[/b]
[b]*****************************1通道灰度图膨胀处理后图***********************[/b]
相关文章推荐
- PHP GD 图像处理组件的常用函数总结
- PHP图像处理之imagecreate、imagedestroy函数介绍
- jsvascript图像处理―(计算机视觉应用)图像金字塔
- Javascript图像处理思路及实现代码
- PHP图像处理之使用imagecolorallocate()函数设置颜色例子
- java数字图像处理基础使用imageio写图像文件示例
- 使用Java进行图像处理的一些基础操作
- javascript图像处理―边缘梯度计算函数
- Javascript图像处理―阈值函数实例应用
- Javascript图像处理―虚拟边缘介绍及使用方法
- PHP图像处理类库及演示分享
- CI框架文件上传类及图像处理类用法分析
- php图像处理函数大全(推荐收藏)
- Javascript图像处理―图像形态学(膨胀与腐蚀)
- Javascript图像处理―平滑处理实现原理
- Swift图像处理之优化照片
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- CI框架文件上传类及图像处理类用法分析
- VTK学习笔记之图像处理
- vtk 图像处理 多种 操作