景德镇陶瓷学院设计艺术学院
实 验 报 告
课程名称 photoshop 姓名 韩璐 学号 201010113421
专业班级 装潢四班 成绩 教师 魏 文 卿
实验项目名称 Photoshop基础知识与基本操作、基本功能、高级功能、高级编辑技巧
实验学时: 1.Photoshop基础知识与基本操作8学时 2.基本功能16 学时 3.高级功能8 学时 4.高级编辑技巧 16学时 5.综合设计 8个学时
实验目的与要求: 1.掌握不同选取工具的使用 2.掌握选区的功能和不同逻辑关系的设置 3.掌握图形绘制工具的使用 4. 掌握钢笔路径的绘制和编辑功能 5.掌握文字的创建和修改编辑 6.掌握图像颜色的调节7.掌握笔刷工具、渐变填充工具、变形工具 8.掌握图层的设1置、滤镜、通道、蒙版 9.掌握高级编辑技巧,例如画笔和图案的设置、图层的高级应用、典型通道的应用
实验内容: 1.Photoshop的基本介绍、工作界面、菜单、控制面板、常用快捷键
2.Photoshop的工具箱、菜单命令、选项栏
3.Photoshop的导航器、标尺与参考线、网格
4.Photoshop的图形工具、自由绘画工具、对象的操作、文档的操作
5.Photoshop的图层编辑、图层混合模式、图层效果、图层样式
6.Photoshop的色彩的调整、矢量绘图、色彩的调整
7.Photoshop的填充渐变、图形的编辑、文字的编辑
8.Photoshop的滤镜、通道、蒙版的编辑以及一些高级编辑技巧
9.Photoshop的动作的设置、批处理、简易网络动画的制作
10.综合创意设计 小结
PS是电脑上的图像处理软件Photoshop 的缩写。对于广大Photoshop爱好者而言,PS亦用来形容通过Photoshop等图形处理软件处理过的图片,即非原始、非未处理的图片。平面设计是PHOTOSHOP应用最为广泛的领域,无论是我们正在阅读的图书封面,还是大街上看到的招帖、海报,这些具有丰富图像的平面印刷品,基本上都需要PHOTOSHOP软件对图像进行处理。 而 广告摄影作为一种对视觉要求非常严格的工作,其最终成品往往要经过PHOTOSHOP的修改才能得到满意的效果。图像编辑是图像处理的基础,可以对图像做各种变换如放大、缩小、旋转、倾斜、等。也可进行复制、去除斑点、修补、修饰图像的残损等。这在婚纱摄影 、人像处理制作中有非常大的用场,去除人像上不满意的部分,进行美化加工,得到让人非常满意的效果。
图像合成则是将几幅图像通过图层操作、工具应用合成完整的、传达明确意义的图像,这是美术设计的必经之路。photoshop提供的绘图工具让外来图像与创意很好地融合,成为可能使图像的合成天衣无缝。
校色调色是photoshop中深具威力的功能之一,可方便快捷地对图像的颜色进行明暗、色编的调整和校正,也可在不同颜色进行切换以满足图像在不同领域如 网页设计、印刷、多媒体等方面应用。
特效制作在photoshop中主要由滤镜、通道及工具综合应用完成。包括图像的特效创意和特效字的制作,如油画、浮雕、石膏画、素描等常用的传统美术技巧都可藉由photoshop特效完成。而各种特效字的制作更是很多美术设计师热衷于photoshop的研究的原因。 在这一个月的学习中,我不仅了解到ps对于设计的重要性,还了解到ps的运用涉及到各个方面。当然,
老师也教了我们很多知识,从基础的每个工具的运用,到一些工具的快捷键,使我们在学习,设计中方便了很多, Ctrl+Shift+I-选择→反选
ctrl+h-隐藏选定区域
ctrl+d-取消选定区域
ctrl+w-关闭文件
ctrl+z撤销
ctrl+x剪切
ctrl+c复制
ctrl+v粘贴
ctrl+Q-退出PHOTOSHOP
Esc-取消操作
这一系列都使我们方便于设计。我们还学习了如何做车的标志,还有
如何抠图。这些听起来简单,可是做起来一点也不简单。但是每次做完后都有大大的满足感。
我们还学习到RGB彩色模式:又叫加色模式,是屏幕显示的最佳颜色,由红、绿、蓝三种颜色组成,每一种颜色可以有0-255的亮度变化。 2)CMYK彩色模式:由品蓝,品红,品黄和黑色组成,又叫减色模式。一般打印输出及印刷都是这种模式,所以打印图片一般都采用CMYK模式。
3)HSB彩色模式:是将色彩分解为色调,饱和度及亮度通过调整色调,饱和度及亮度得到颜色和变化。
4)Lab彩色模式:这种模式通过一个光强和两个色调来描述一个
色调叫a,另一个色调叫b。它主要影响着色调的明暗。一般RGB转换成CMYK都先经Lab的转换。
很实用的一款软件,也谢谢老师的悉心指导,我会继续努力学好
ps这个软件的。
第二篇:简易photoshop代码数字图像处理实验报告
一.一个简单的“photoshop”软件
二.设计目的:
数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。
数字图像处理课程设计是在完成数字图像处理的相关理论的学习后,进行的综合性训练课程,其目的主要包括:
1、使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;
2、增强学生应用VC++编写数字图像处理的应用程序及分析、解决实际问题的能力;
3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力,提高工科学生的就业能力。
三.设计内容:
1.打开图像:
主要代码:
static char szFilter[]="BMP文件(*.bmp)|*.bmp||"; //定义过滤文件的类型
CFileDialog dlg(TRUE,"bmp",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对象
CString filename;
int ret=dlg.DoModal(); //运行打开文件对方框
if(ret==IDOK)
{
filename=dlg.GetFileName(); //获取所选择图像的路径
m_dib.LoadFromFile(filename); //加载图像
if(!m_dib.m_bLoaded) //判断是否加载图像成功
{
AfxMessageBox("图像打不开");
return;
}
效果图:
2.水平镜像:把图像的第一列和最后一列调转,第二列和倒数第二列换过来,以此类推下去,直到第nw/2为止。
代码:
int temp,i,j;
for(j=0;j<nh;j++)
for(i=0;i<nw/2;i++)
{
temp=m_dib.m_pdata[j*nw+i];
m_dib.m_pdata[j*nw+i]=m_dib.m_pdata[nw-i-1+j*nw];
m_dib.m_pdata[nw-i-1+j*nw]=temp;
}
效果图:
3.素描风格:先把灰度值与右下的作对比,如果差值大于一个值则说明这是轮廓,先把非轮廓的位置像素置为黑色,最后对所有像素进行底片化处理
代码:
int temp,i,j;
for(j=0;j<nh;j++)
for(i=0;i<nw;i++)
{
temp=m_dib.m_pdata[j*nw+i]-m_dib.m_pdata[(j+1)*nw+i+1];
if(temp<10)
m_dib.m_pdata[j*nw+i]=0; //黑色为0
}
for(j=0;j<nh;j++)
for(i=0;i<nw;i++)
{
int gray=m_dib.m_pdata[j*nw+i];
m_dib.m_pdata[j*nw+i]=255-gray;
}
效果图:
4图像雾化:在图像中引入一定的随机值,打乱图像中的像素值
代码:
int i,j,k,dat; //i表示列,j表行
byte *ptemp=(byte *)new byte[nw*nh];
memset(ptemp,0,nw*nh);
for(j=0;j<nh;j++)
for(i=0;i<nw;i++)
{
k=rand()%8;//取任意的随机值
dat=j*nw+i+k;
if(dat>=nw*nh)
dat=nw*nh-1;
ptemp[j*nw+i]=m_dib.m_pdata[dat];
}
memcpy(m_dib.m_pdata,ptemp,nw*nh);
效果图:
5.浮雕处理:通过勾画图象轮廓和降低周围像素色值,从而生成具有凹凸感的浮雕效果。其方法是生成一缓冲区,计算当前像素的左上角与右下角的像素值之差,再加上一个补值。将其存储到缓冲区。再将缓冲区的数据逐点替换到图像中并显示出来。
代码:
int w=3,i,j; //w为模板宽度
BYTE *p=new BYTE[nw*nh];
memcpy(p,m_dib.m_pdata,nw*nh);
for(j=w/2;j<nh-w/2;j++)
for(i= w/2;i<nw-w/2;i++)
{
p[j*nw+i]=m_dib.m_pdata[(j-1)*nw+i-1]*(1)+m_dib.m_pdata[(j+1)*nw+i+1]*(-1)+120;
}
memcpy(m_dib.m_pdata,p,nw*nh);
delete []p;
效果图:
6.直方图均衡化
代码:
int n[256]={0},g[256]={0}; //定义频数数组n,均衡化每个像素的灰度级的数组g
double f[256],t[256]; //定义频率数组f,累加的频率数组t
int g_max=0,g_mim=255;
int i,j,k,z;
for(j=0;j<nh;j++) //统计灰度级的频数n
for(i=0;i<nw;i++)
{ z=m_dib.m_pdata[j*nw+i];
n[z]++;
}
for(k=0;k<=255;k++) //统计每个灰度级出现的频率
f[k]=n[k]/(nw*nh*1.0);
//累计灰度级的频率
t[0]=f[0];
for(k=1;k<=255;k++)
t[k]=t[k-1]+f[k];
for(j=0;j<nh;j++)
for(i=0;i<nw;i++)
{ BYTE w=m_dib.m_pdata[j*nw+i];
g_max=w>g_max?w:g_max; //得到最大值
g_mim=w<g_mim?w:g_mim; //得到最小值
}
for(k=0;k<=255;k++) //利用公式求每个像素均衡化后的灰度级
g[k]=(int)((g_max-g_mim)*t[k]+g_mim+0.5);
for(j=0;j<nh;j++) //逐个替换
for(i=0;i<nw;i++)
{
k=m_dib.m_pdata[j*nw+i];
m_dib.m_pdata[j*nw+i]=g[k];
}
for(j=0;j<nh;j++) //计算均衡化的直方图
for(i=0;i<nw;i++)
{ BYTE temp=m_dib.m_pdata[j*nw+i];
m_hist[temp]++;
}
m_bHist=true;
{ //绘制原图像的直方图
CString str;
int nh=m_dib.GetDIBHeight();
int i;
// 画坐标轴
// 绘制坐标轴
pDC->MoveTo(410,nh+20); //(410,nh+20 )是直方图的左上角坐标
// 垂直轴
pDC->LineTo(410,nh+200);//(410,nh+200 )是直方图的左下角坐标
// 水平轴
pDC->LineTo(710,nh+200);//(710,nh+200 )是直方图的右下角坐标
// 写X轴刻度值
str.Format("0");
pDC->TextOut(410, nh+200+10, str);
str.Format("50");
pDC->TextOut(460, nh+200+10, str);
str.Format("100");
pDC->TextOut(510, nh+200+10, str);
str.Format("150");
pDC->TextOut(560, nh+200+10, str);
str.Format("200");
pDC->TextOut(610, nh+200+10, str);
str.Format("255");
pDC->TextOut(665, nh+200+10, str);
// 绘制X轴刻度
for ( i = 0; i < 256; i += 25)
{
if ((i & 1) == 0)
{
// 10的倍数
pDC->MoveTo(i + 10, nh+200-2);
pDC->LineTo(i + 10, nh+200+2);
}
else
{
// 10的倍数
pDC->MoveTo(i + 10, nh+200-2);
pDC->LineTo(i + 10, nh+200+2);
}
}
// 绘制X轴箭头
pDC->MoveTo(705,nh+200-5);
pDC->LineTo(710,nh+200);
pDC->LineTo(705,nh+200+5);
// 绘制y轴箭头
pDC->MoveTo(410,nh+20);
pDC->LineTo(405,nh+20+5);
pDC->MoveTo(410,nh+20);
pDC->LineTo(415,nh+20+5);
int max=0;
for(i=0;i<256;i++)
if(m_yuan[i]>max)
max=m_yuan[i];
for(i=0;i<256;i++)
{
pDC->MoveTo(410+i,nh+200);
pDC->LineTo(410+i,nh+200-(m_yuan[i]*160/max));
}
}
}
if(m_bHist==true) //绘画新的直方图
{
CString str;
int nh=m_dib.GetDIBHeight();
int i;
// 画坐标轴
// 绘制坐标轴
pDC->MoveTo(10,nh+20); //(10,nh+20 )是直方图的左上角坐标
// 垂直轴
pDC->LineTo(10,nh+200);//(10,nh+200 )是直方图的左下角坐标
// 水平轴
pDC->LineTo(310,nh+200);//(310,nh+200 )是直方图的右下角坐标
// 写X轴刻度值
str.Format("0");
pDC->TextOut(10, nh+200+10, str);
str.Format("50");
pDC->TextOut(60, nh+200+10, str);
str.Format("100");
pDC->TextOut(110, nh+200+10, str);
str.Format("150");
pDC->TextOut(160, nh+200+10, str);
str.Format("200");
pDC->TextOut(210, nh+200+10, str);
str.Format("255");
pDC->TextOut(265, nh+200+10, str);
// 绘制X轴刻度
for ( i = 0; i < 256; i += 25)
{
if ((i & 1) == 0)
{
// 10的倍数
pDC->MoveTo(i + 10, nh+200-2);
pDC->LineTo(i + 10, nh+200+2);
}
else
{
// 10的倍数
pDC->MoveTo(i + 10, nh+200-2);
pDC->LineTo(i + 10, nh+200+2);
}
}
// 绘制X轴箭头
pDC->MoveTo(305,nh+200-5);
pDC->LineTo(310,nh+200);
pDC->LineTo(305,nh+200+5);
// 绘制y轴箭头
pDC->MoveTo(10,nh+20);
pDC->LineTo(5,nh+20+5);
pDC->MoveTo(10,nh+20);
pDC->LineTo(15,nh+20+5);
int max=0;
for(i=0;i<256;i++)
if(m_hist[i]>max)
max=m_hist[i];
for(i=0;i<256;i++)
{
pDC->MoveTo(10+i,nh+200);
pDC->LineTo(10+i,nh+200-(m_hist[i]*160/max));
}
}
效果图:
四.心得体会:
通过这次数字图像处理的课程设计,对图片有了更深一层的认识,理解了对图像处理的一些原理,在这个课程设计过程中,需要自己去查阅资料,找资料,还需要理解所找到的资料,遇到问题独立去思考,或者去请教同学,给了我一个很好的锻炼机会,做事情一定要坚持,最后一定会有收获的。
五.参考文献:
《数字图像处理》 ——电子工业出版社
《vc++数字图像处理实验指导书》 曹老师、何家峰主编