图像处理源代码(图像处理源代码有哪些)
admin 发布:2022-12-19 20:06 113
本篇文章给大家谈谈图像处理源代码,以及图像处理源代码有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、对图像进行二值化的处理方法,求源代码,最好是C++/C或者OPENCV
- 2、求基于matlab指纹扫描图像处理的源代码
- 3、matlab图像平滑处理,用邻域平均法和中值滤波法实现图像平滑处理。求源代码(要有注释)
- 4、基于matlab运动模糊图像处理的源代码
- 5、求MATLAB GUI 环境下 图像处理图像的平移,任意角度的旋转,缩放和翻转,仿射变换等的源代码
对图像进行二值化的处理方法,求源代码,最好是C++/C或者OPENCV
//声明IplImage指针
IplImage* pFrame = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;
CvMat* pFrameMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;
pBkImg = cvCreateImage(cvSize(pFrame-width, pFrame-height), IPL_DEPTH_8U,1);
pFrImg = cvCreateImage(cvSize(pFrame-width, pFrame-height), IPL_DEPTH_8U,1);
pBkMat = cvCreateMat(pFrame-height, pFrame-width, CV_32FC1);
pFrMat = cvCreateMat(pFrame-height, pFrame-width, CV_32FC1);
pFrameMat = cvCreateMat(pFrame-height, pFrame-width, CV_32FC1);
//转化成单通道图像再处理
cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);
cvConvert(pFrImg, pFrameMat);
cvConvert(pFrImg, pFrMat);
cvConvert(pFrImg, pBkMat);
//二值化前景图
cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);
不知道你说的什么意思,要对一个图像进行二值化处理用OpenCV的话就是
void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
double max_value, int threshold_type );
这个函数是定阈值二值化处理,比较粗略吧。另外可以用自适应阈值二值化,那样的话就会比这个更精细。
求基于matlab指纹扫描图像处理的源代码
clear all,close all,clc % 清理工作空间,关闭运行窗口,清理命令窗口
I=imread('Empreinte.bmp'); % 读入图像
imshow(I) % 显示图像
set(gcf,'position',[1 1 600 600]); % 得到图形窗口句柄,设置图形窗口位置
J=I(:,:,1)160; % 设定阈值为160,进行黑白化处理
imshow(J) % 显示处理后的图像
set(gcf,'position',[1 1 600 600]); % 得到图形窗口句柄,设置图形窗口位置
K=bwmorph(~J,'thin','inf'); % 数学形态学运算,图像细化,~符号代表黑白反色
imshow(~K) % 显示处理后的图像,~符号代表黑白反色
set(gcf,'position',[1 1 600 600]); % 得到图形窗口句柄,设置图形窗口位置
function y=minutie(x)
i=ceil(size(x)/2);
if x(i,i)==0;
y=0;
else
y=sum(x(:)) - 1;
end
fun=@minutie; % 得到函数句柄
L = nlfilter(K,[3 3],fun); % 滤波处理
LTerm=(L==1); % 选择端点
imshow(LTerm) % 显示白色点
LTermLab=bwlabel(LTerm); % 端点标识
propTerm=regionprops(LTermLab,'Centroid'); % 端点区域分析,寻找端点区域中心
CentroidTerm=round(cat(1,propTerm(:).Centroid)); % 端点圆整为整数
imshow(~K) % 显示隆线细化图像
set(gcf,'position',[1 1 600 600]); % 得到当前图形窗口句柄,设置位置
hold on % 在前面的图形窗口继续绘制图像
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制隆线端点标识,红色圆圈
LBif=(L==3); % 选择分叉点
LBifLab=bwlabel(LBif); % 分叉点标识
propBif=regionprops(LBifLab,'Centroid','Image'); % 区域分析,寻找区域中心
CentroidBif=round(cat(1,propBif(:).Centroid)); % 分叉点圆整为整数
plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制隆线分叉点标识,绿色圆圈
D=6;
Distance=DistEuclidian(CentroidBif,CentroidTerm); % 求端点和分叉点的距离
SpuriousMinutae=DistanceD; % 满足距离小于D的点
[i,j]=find(SpuriousMinutae); % 查找对应像素点
CentroidBif(i,:)=[]; % 去除该分叉点
CentroidTerm(j,:)=[]; % 去除该端点
Distance=DistEuclidian(CentroidBif); % 求两个分叉点的距离
SpuriousMinutae=DistanceD; % 满足距离小于D的点
[i,j]=find(SpuriousMinutae); % 查找对应像素点
CentroidBif(i,:)=[]; % 去除该分叉点
Distance=DistEuclidian(CentroidTerm); % 求两个端点的距离
SpuriousMinutae=DistanceD; % 满足距离小于D的点
[i,j]=find(SpuriousMinutae); % 查找对应像素点
CentroidTerm(i,:)=[]; % 去除该端点
hold off % 结束在前面的图形窗口绘图
imshow(~K) % 显示细化图
hold on % 继续在前面的图形窗口绘图
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制隆线端点标识,红色圆圈
plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制隆线分叉点标识,绿色圆圈
hold off % 结束在前面的图形窗口绘图
Kopen=imclose(K,strel('square',7)); % 闭合运算
KopenClean= imfill(Kopen,'holes'); % 填充图像中的孔洞
KopenClean=bwareaopen(KopenClean,5); % 开运算
imshow(KopenClean) % 显示处理结果
KopenClean([1 end],:)=0; % 赋值语句
KopenClean(:,[1 end])=0; % 赋值语句
ROI=imerode(KopenClean,strel('disk',10)); % 腐蚀运算
imshow(ROI) % 显示处理结果
imshow(I) % 显示原始图像
hold on % 继续在前面的图形窗口绘图
imshow(ROI) % 显示感兴趣区域
alpha(0.5) % 设置透明度
hold on % 继续在前面的图形窗口绘图
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制端点标识,红色圆圈
plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制分叉点标识,绿色圆圈
hold off % 结束在前面的图形窗口绘图
[m,n]=size(I(:,:,1)); % 求图像尺寸
indTerm=sub2ind([m,n]; % 从下标得到单精度索引
CentroidTerm(:,1),CentroidTerm(:,2)); % 端点
Z=zeros(m,n); % 全零矩阵
Z(indTerm)=1;
ZTerm=Z.*ROI';
[CentroidTermX,CentroidTermY]=find(ZTerm);
indBif=sub2ind([m,n],CentroidBif(:,1),CentroidBif(:,2)); % 从下标得到单精度索引
Z=zeros(m,n);
Z(indBif)=1;
ZBif=Z.*ROI';
[CentroidBifX,CentroidBifY]=find(ZBif);
imshow(I) % 显示原始图像
hold on % 继续绘图
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2) % 红色圆圈
plot(CentroidBifX,CentroidBifY,'go','linewidth',2) % 绿色圆圈
Table=[3*pi/4 2*pi/3 pi/2 pi/3 pi/4 % 角度查找表
5*pi/6 0 0 0 pi/6
pi 0 0 0 0
-5*pi/6 0 0 0 -pi/6
-3*pi/4 -2*pi/3 -pi/2 -pi/3 -pi/4];
for ind=1:length(CentroidTermX)
Klocal=K(CentroidTermY(ind)-2:CentroidTermY(ind)+2, ...
CentroidTermX(ind)-2:CentroidTermX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
OrientationTerm(ind,1)=Table(i,j);
end
dxTerm=sin(OrientationTerm)*5;
dyTerm=cos(OrientationTerm)*5;
figure % 新建窗口
imshow(K) % 显示黑白图
set(gcf,'position',[1 1 600 600]); % 设置图像窗口属性
hold on % 继续绘图
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2) % 红色圆圈
plot([CentroidTermX CentroidTermX+dyTerm]',... % 红色短线
[CentroidTermY CentroidTermY-dxTerm]','r','linewidth',2)
for ind=1:length(CentroidBifX)
Klocal=K(CentroidBifY(ind)-2:CentroidBifY(ind)+2, ...
CentroidBifX(ind)-2:CentroidBifX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
if length(i)~=3
CentroidBifY(ind)=NaN;
CentroidBifX(ind)=NaN;
OrientationBif(ind)=NaN;
else
for k=1:3
OrientationBif(ind,k)=Table(i(k),j(k));
dxBif(ind,k)=sin(OrientationBif(ind,k))*5;
dyBif(ind,k)=cos(OrientationBif(ind,k))*5;
end
end
end
plot(CentroidBifX,CentroidBifY,'go','linewidth',2) % 绿色圆圈
OrientationLinesX=[CentroidBifX ...
CentroidBifX+dyBif(:,1);CentroidBifX ...
CentroidBifX+dyBif(:,2);CentroidBifX CentroidBifX+dyBif(:,3)]';
OrientationLinesY=[CentroidBifY
CentroidBifY-dxBif(:,1);CentroidBifY ...
CentroidBifY-dxBif(:,2);CentroidBifY CentroidBifY-dxBif(:,3)]';
plot(OrientationLinesX,OrientationLinesY,'g','linewidth',2) % 绿色短线
MinutiaTerm=[CentroidTermX,CentroidTermY,OrientationTerm];
MinutiaBif=[CentroidBifX,CentroidBifY,OrientationBif];
saveMinutia('John Doe',MinutiaTerm,MinutiaBif); % saveMinutia函数见附件程序
matlab图像平滑处理,用邻域平均法和中值滤波法实现图像平滑处理。求源代码(要有注释)
%%中值
I=imread('lena.bmp'); %读原图
J1=imnoise(I,'salt pepper',0.02); %加均值为0,方差为0.02的椒盐噪声
J2=imnoise(I,'gaussian',0.02); %加均值为0,方差为0.02的高斯噪声。
subplot(2,2,1),imshow(J1); %显示有椒盐噪声图像
subplot(2,2,2),imshow(J2); %显示有高斯噪声图像
I1= medfilt2(J1,[5,5]); %对有椒盐噪声图像进行5×5方形窗口中值滤波
I2= medfilt2(J2,[5,5]); %对有高斯噪声图像进行5×5方形窗口中值滤波
subplot(2,2,3),imshow(I1); %显示有椒盐噪声图像的滤波结果
subplot(2,2,4),imshow(I2); %显示有高斯噪声图像的滤波结果
%%均衡
I=imread('lena.bmp'); %将图读入到I
imshow(I); %显示图像
figure,imhist(I); %直方图
I2=histeq(I); %均衡化
figure;imshow(I2); %处理后图像显示
figure;imhist(I2); %均衡化后直方图
imwrite(I2,'lena2.bmp'); %保存图像
基于matlab运动模糊图像处理的源代码
等一会的,我来帮你
华东师范大学???
tuxianghuanyuan('3.jpg', 80, 8, 0.02);
function tuxianghuanyuan(im, a, b, NSPR)
i = imread(im);
f = im2double(i);
PSF = fspecial('motion', a, b);
frest1 = deconvwnr(f, PSF, NSPR);
subplot(221),imshow(f); title('原图像');
subplot(222),imshow(frest1); title('维纳滤波处理后图像');
end
求MATLAB GUI 环境下 图像处理图像的平移,任意角度的旋转,缩放和翻转,仿射变换等的源代码
该gui函数基本上包括图像处理里面的最基本处理,相当于一个小型photoshop。
比如读取文件,
几何变换中的垂直镜像,平移,旋转,缩放;
正交变换的DFT,FFT,DCT,DST,DHT,DWashT;
灰度处理中的反色,直方图均衡,全局线性变换,分段线性变换,指数非线性变换,对数非线性变换;
图像增强里面的加噪声,平滑,锐化,伪彩色增强;
图像分割里面的灰度阈值法,Robert,Laplace,sobel,prewitt,canny算子边缘检测法;
图像恢复里面的直接逆滤波,维纳滤波;图像编码里面的霍夫曼编码,行程编码-
关于图像处理源代码和图像处理源代码有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
相关推荐
- 04-24java烟花源代码(java烟花绽放代码)[20240424更新]
- 04-24crm系统,crm系统的功能有哪些
- 04-24中国风古典红色网站源代码(中国风古典壁纸红色)[20240424更新]
- 04-24手机网页播放器源代码(怎么用手机看网页源代码)[20240424更新]
- 04-24充值平台源代码(手游充值代码)[20240424更新]
- 04-24中国营销网站,中国营销网站有哪些
- 04-24合同生成源代码(软件开发合同 源代码)[20240424更新]
- 04-24全网营销推广平台有哪些,全网营销推广平台有哪些类型
- 04-24网站营销策略有哪些,网站营销策略有哪些类型
- 04-24苹果查看网页源代码(苹果如何查看网页源代码)[20240424更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接