如何通过PYthon进行图像的暗化处理
2018-01-12 11:47
337 查看
如何使用python的numpy和python库中的PIL中的Image类进行图像的手绘处理
1. 手绘的情况要考虑原图的明暗程度以及光照的影响。
2. 图像的明暗程度的变化可以用grad u(i,j,k)梯度进行表示,直接调用numpy中的gradient(a)即可对ndarray数组进行梯度化
3.通过降维度函数convert('L'),将图像数组降为二维,进行灰度化
4.将光源效果,与深度depath对梯度的影响进行叠加
5.将处理后的数组通过Image.fromarray函数进行生成
im =np.array(Image.open('D:/dmeo.jpg').convert("L")).astype('float')
depath = 5 #对图像进行灰度降解的程度
grad = np.gradient(im) #计算图像对应的二维矩阵中的各个元素对应的梯度值,根据变化率来对各个像素点进行单位归一化
grad_x,grad_y = grad # x,y轴上面的梯度值,主要用来表示灰度的变化率
grad_x = grad_x*depath/100 #根据深度调整X,Y上的梯度值,进而影响灰度
grad_y = grad_y*depath/100
#求出立体坐标系下的梯度的模长
A = np.sqrt(grad_x**2+grad_y**2+1)#数学的模长计算公式
#进行单位化处理
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1/A
#模拟光源对立体图像的影响
vec_el = np.pi/2.2
vec_ez = np.pi/4.
#下面分别是对X,Y,Z轴上面的影响
dx = np.cos(vec_el)*np.cos(vec_ez)
dy = np.cos(vec_el)*np.sin(vec_ez)
dz = np.sin(vec_el)
#将虚拟深度都灰度的影响以及光暗程度对灰度的影响叠加起来,并进行归一化
c = 255*(uni_x*dx+uni_y*dy+uni_z*dz)
#为了防止越界,进行区间裁剪
c = c.clip(0,255)
d = Image.fromarray(c.astype('uint8'))
d.save('D:/hello.png')
1. 手绘的情况要考虑原图的明暗程度以及光照的影响。
2. 图像的明暗程度的变化可以用grad u(i,j,k)梯度进行表示,直接调用numpy中的gradient(a)即可对ndarray数组进行梯度化
3.通过降维度函数convert('L'),将图像数组降为二维,进行灰度化
4.将光源效果,与深度depath对梯度的影响进行叠加
5.将处理后的数组通过Image.fromarray函数进行生成
im =np.array(Image.open('D:/dmeo.jpg').convert("L")).astype('float')
depath = 5 #对图像进行灰度降解的程度
grad = np.gradient(im) #计算图像对应的二维矩阵中的各个元素对应的梯度值,根据变化率来对各个像素点进行单位归一化
grad_x,grad_y = grad # x,y轴上面的梯度值,主要用来表示灰度的变化率
grad_x = grad_x*depath/100 #根据深度调整X,Y上的梯度值,进而影响灰度
grad_y = grad_y*depath/100
#求出立体坐标系下的梯度的模长
A = np.sqrt(grad_x**2+grad_y**2+1)#数学的模长计算公式
#进行单位化处理
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1/A
#模拟光源对立体图像的影响
vec_el = np.pi/2.2
vec_ez = np.pi/4.
#下面分别是对X,Y,Z轴上面的影响
dx = np.cos(vec_el)*np.cos(vec_ez)
dy = np.cos(vec_el)*np.sin(vec_ez)
dz = np.sin(vec_el)
#将虚拟深度都灰度的影响以及光暗程度对灰度的影响叠加起来,并进行归一化
c = 255*(uni_x*dx+uni_y*dy+uni_z*dz)
#为了防止越界,进行区间裁剪
c = c.clip(0,255)
d = Image.fromarray(c.astype('uint8'))
d.save('D:/hello.png')
相关文章推荐
- 利用Python的PIL库进行简单的图像处理
- 使用谷歌开源组件tesseract-OCR识别身份证,通过opencv处理图像后再进行识别(windows版本)
- python使用pil进行图像处理(等比例压缩、裁剪)实例代码
- OpenCV中如何只对IplImage图像的数据进行处理
- **ANDROID**# 第七章图形与图像处理(静态处理) > Bitmap是有像素点构成的点阵图。 ------ ## 使用简单的图片 ---- * 通过Drawable对象进行访问。
- Win7下安装Python图像处理库PIL、pytesser、tesseract进行验证码识别
- 如何使用MATLAB对图像进行批量的修改名称的处理
- 使用python进行图像处理-调整图片大小
- 利用python进行图像处理
- 使用python进行图像处理
- python 进行图像处理(PIL)
- 推荐:用Python进行图像处理
- python之通过“反射”实现不同的url指向不同函数进行处理(反射应用一)
- 安装Python图像处理库PIL、pytesseract进行验证码识别
- 如何通过pandas.apply进行整列和整行计算,以及如何处理A value is trying to be set on a copy of a slice from a DataFrame.错误
- python进行基本的图像处理
- iOS通过CIFilter对图像进行滤镜处理
- Ubuntu + coreseek + python + mysql (三、通过前端html进行搜索,用python处理数据)
- Ajax 如何通过url 传递Json 数据或者数组 给PHP进行处理
- matlab通过摄像头获取图像进行处理