关于MATLAB图像处理程序的问题:请问每一步的意思,输出的4幅图像分别是什么

关于MATLAB图像处理程序的问题:请问每一步的意思,输出的4幅图像分别是什么,第1张

close all;clear;clc;

%读取并显示原图

image_rgb=imread('woman1jpg');

image_ycbcr=rgb2ycbcr(image_rgb); %将RGB色彩值变换为YcbCr色彩空间(将RGB真彩色图像转化为YcbCr色彩空间中相等的图像)

y=image_ycbcr(:,:,1); %这三行分别是Ycbcr空间的y,cb,cr对应矩阵

cr=image_ycbcr(:,:,2);

cb=image_ycbcr(:,:,3);

[W,H]=size(y); % y对应矩阵大小

image_face=zeros(W,H); %创建和原图等大的矩阵用来存放接下来二值化人脸数据

%以下循环是根据设定的阈值把人脸转换成二值图像

for x1=1:W; %%%%%%%%(cb=( 100,140),cr=(70,160)这是阈值,这个阈值应该是人脸肤色的范围

for y1=1:H;

if (cb(x1,y1)>=70)&&(cb(x1,y1)<=140)&&(cr(x1,y1)>=80)&&(cr(x1,y1)<=170)

image_face(x1,y1)=0;

else

image_face(x1,y1)=255;

end

end

end

figure(1),imshow(image_face) %显示初步转换成二值图像的人脸

%%%%%%%%% 找到人脸区域并设为白色%%%% (r=35)

se1=strel('square',35); %这个函数可以创建边长35的方形元素

fo=imclose(image_face,se1); %利用上面创建的方形元素,弥补figure(1)中人脸中以及其他部分残留的小块黑色

figure(2),imshow(fo) %显示修补漏洞后的人脸

log=logical(fo); %生成一个逻辑索引矩阵,为非零元素时返回1,否则返回0。用于把figure(2)中黑色部分记录为0,这样对非人脸部分做修改也不会影响人脸

r=image_rgb(:,:,1); %这个是rgb空间三维的数据

g=image_rgb(:,:,2);

b=image_rgb(:,:,3);

r(log==0)=255; %根据前面的逻辑数据把之前的黑色部分对应位置设为255,以后显示RGB图时,非人脸部分就是白色啦

g(log==0)=255;

b(log==0)=255;

face_rgb=cat(3,r,g,b); %把修改后的RGB矩阵重组

figure(3),imshow(face_rgb),title('face_rgb'); % 显示非人脸部分已经转白的RGB图

afm = rgb2gray(face_rgb); % rgb图转灰度图

figure(4), imshow(afm), title('surface image') % 显示人脸灰度图

这个是我个人加的注释 不知道你能不能理解 不能理解可以追问 我们一起学习下 哈哈 我也是新手

windows7系统自带的图像处理软件就是画图,在开始→程序→附件里面可以找到。

画图是一个简单的图像绘画程序,是微软Windows *** 作系统的预装软件之一。“画图”程序是一个位图编辑器,可以对各种位图格式的图画进行编辑,用户可以自己绘制图画,也可以对扫描的进行编辑修改,在编辑完成后,可以以BMP,JPG,GIF 等格式存档,用户还可以发送到桌面或其他文档中。

旋转图像(含对话框 这里对话框需要自己建立) void CCimageProcessingView::OnGeomRota() { //获取指向文档的指针 CCimageProcessingDoc pDoc = GetDocument(); //指向DIB的指针 LPSTR lpDIB; //锁定DIB lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB()); // 缩放比率 int iRotaAngle; // 创建对话框 CDlgGeoRota dlgPara; // 初始化变量值 dlgParam_iRotaAngle = 90; // 显示对话框,提示用户设定旋转角度 if (dlgParaDoModal() != IDOK) { // 返回 return; } // 获取用户设定的平移量 iRotaAngle = dlgParam_iRotaAngle; // 删除对话框 delete dlgPara; //创建新DIB HDIB hNewDIB=NULL; //设置光标状态为等待状态 BeginWaitCursor(); //调用RotateDIB函数旋转DIB图象 hNewDIB=(HDIB)::RotateDIB(lpDIB,iRotaAngle); //旋转成功 if (hNewDIB) { //替换原来的DIB图象为新的DIB pDoc->ReplaceHDIB(hNewDIB); //更新DIB图象的大小和调色板 pDoc->InitDIBData(); //设置文档修改标记 pDoc->SetModifiedFlag(TRUE); //调节滚动视图大小 SetScrollSizes(MM_TEXT,pDoc->GetDocSize()); //更新所有视图 pDoc->UpdateAllViews(NULL); } else { //提示信息 MessageBox("实现图象旋转失败!"); } //解除锁定 ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB()); //结束光标等待状态 EndWaitCursor(); } / 函数名称: RotateDIB () 参数: LPSTR lpDIB //指向源DIB图像指针 int iAngle 说明: 该函数用来实现DIB图像的旋转。 / HGLOBAL WINAPI RotateDIB(LPSTR lpDIB,int iAngle) { //原图象宽度 LONG lWidth; //原图象高度 LONG lHeight; //旋转后图象宽度 LONG lNewWidth; //旋转后图象高度 LONG lNewHeight; //原图象的颜色数 WORD wNumColors; //原图象的信息头结构指针 LPBITMAPINFOHEADER lpbmi,lpbmi0; //指向原图象和目的图象的像素的指针 LPBYTE lpSrc,lpDst; //指向原图像像素的指针 LPBYTE lpDIBBits; //指向旋转后图像(像素)的指针 LPBYTE lpNewDIBBits; LPSTR lpNewDIB; //旋转后新的DIB句柄 HDIB hDIB;

以上就是关于关于MATLAB图像处理程序的问题:请问每一步的意思,输出的4幅图像分别是什么全部的内容,包括:关于MATLAB图像处理程序的问题:请问每一步的意思,输出的4幅图像分别是什么、windows7系统自带的图像处理软件是什么、请教vc++高手讲解一下下面的图像处理程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9436597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存