国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實(shí)現(xiàn)PS圖像調(diào)整黑白效果示例

2020-02-22 23:00:34
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python實(shí)現(xiàn)PS圖像調(diào)整黑白效果。分享給大家供大家參考,具體如下:

這里用Python 實(shí)現(xiàn) PS 里的圖像調(diào)整–黑白,PS 里的黑白并不是簡單粗暴的將圖像轉(zhuǎn)為灰度圖,而是做了非常精細(xì)的處理,具體的算法原理和效果圖可以參考附錄說明。

比起之前的程序,對(duì)代碼進(jìn)行了優(yōu)化,完全用矩陣運(yùn)算代替了 for 循環(huán),運(yùn)算效率提升了很多。具體的代碼如下:

import numpy as npimport matplotlib.pyplot as pltfrom skimage import iofile_name='D:/Image Processing/PS Algorithm/4.jpg';img=io.imread(file_name)img = img * 1.0Color_ratio = np.zeros(6)Color_ratio[0]=0.4;   # RedColor_ratio[1]=0.6;   # YellowColor_ratio[2]=0.4;   # GreenColor_ratio[3]=0.6;   # CyanColor_ratio[4]=0.2;   # BlueColor_ratio[5]=0.8;   # Magentamax_val = img.max(axis = 2)min_val = img.min(axis = 2)sum_val = img.sum(axis = 2)mid_val = sum_val - max_val - min_valmask_r = (img[:, :, 0] - min_val - 0.01) > 0mask_r = 1 - mask_rmask_g = (img[:, :, 1] - min_val - 0.01) > 0mask_g = 1 - mask_gmask_b = (img[:, :, 2] - min_val - 0.01) > 0mask_b = 1 - mask_bratio_max_mid = mask_r * Color_ratio[3] + mask_g * Color_ratio[5] + mask_b * Color_ratio[1]mask_r = (img[:, :, 0] - max_val + 0.01) < 0mask_r = 1 - mask_rmask_g = (img[:, :, 1] - max_val + 0.01) < 0mask_g = 1 - mask_gmask_b = (img[:, :, 2] - max_val + 0.01) < 0mask_b = 1 - mask_bratio_max= mask_r * Color_ratio[4] + mask_g * Color_ratio[0] + mask_b * Color_ratio[2]I_out = max_val * 1.0I_out = (max_val-mid_val)*ratio_max + (mid_val-min_val)*ratio_max_mid + min_valplt.figure()plt.imshow(img/255.0)plt.axis('off')plt.figure(2)plt.imshow(I_out/255.0, plt.cm.gray)plt.axis('off')plt.show()

附錄:PS 圖像調(diào)整算法——黑白

黑白調(diào)整

Photoshop CS的圖像黑白調(diào)整功能,是通過對(duì)紅、黃、綠、青、藍(lán)和洋紅等6種顏色的比例調(diào)節(jié)來完成的。能更精細(xì)地將彩色圖片轉(zhuǎn)換為高質(zhì)量的黑白照片。

Photoshop CS圖像黑白調(diào)整功能的計(jì)算公式為:

gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min

公式中:gray為像素灰度值,max、mid和min分別為圖像像素R、G、B分量顏色的最大值、中間值和最小值,ratio_max為max所代表的分量顏色(單色)比率,ratio_max_mid則為max與mid兩種分量顏色所形成的復(fù)色比率。

默認(rèn)的單色及復(fù)色比率為:

Color_Ratio(1)=0.4;     %%%% Red
Color_Ratio(2)=0.6;     %%%% Yellow
Color_Ratio(3)=0.4;     %%%% Green
Color_Ratio(4)=0.6;     %%%% Cyan
Color_Ratio(5)=0.2;     %%%% Blue
Color_Ratio(6)=0.8;     %%%% Magenta

Program:

%%%%% 程序?qū)崿F(xiàn)圖像的黑白調(diào)整功能clc;clear all;close all;Image=imread('9.jpg');Image=double(Image);R=Image(:,:,1);G=Image(:,:,2);B=Image(:,:,3);[row, col] = size(R);Gray_img(1:row,1:col)=0;Sum_rgb=R+G+B;%%%% 各種顏色的默認(rèn)比率Color_Ratio(1:6)=0;Color_Ratio(1)=0.4;   %%%% RedColor_Ratio(2)=0.6;   %%%% YellowColor_Ratio(3)=0.4;   %%%% GreenColor_Ratio(4)=0.6;   %%%% CyanColor_Ratio(5)=0.2;   %%%% BlueColor_Ratio(6)=0.8;   %%%% Magentafor i=1:row  for j=1:col    r=R(i,j);    g=G(i,j);    b=B(i,j);    Max_value=max(r,max(g,b));    Min_value=min(r,min(g,b));    Mid_value=Sum_rgb(i,j)-Max_value-Min_value;    if(Min_value==r)      Index=0;    elseif(Min_value==g)      Index=2;    else      Index=4;    end    ratio_max_mid=Color_Ratio(mod(Index+3,6)+1);    if(Max_value==r)      Index=1;    elseif(Max_value==g)      Index=3;    else      Index=5;    end    ratio_max=Color_Ratio(Index);    Temp=(Max_value-Mid_value)*ratio_max+(Mid_value-Min_value)...           *ratio_max_mid+Min_value;    Gray_img(i,j)=(Max_value-Mid_value)*ratio_max+(Mid_value-Min_value)...           *ratio_max_mid+Min_value;  endendimshow(Image/255);figure, imshow(Gray_img/255);            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西贡区| 云南省| 江北区| 石渠县| 淮北市| 盘锦市| 法库县| 双江| 禹州市| 息烽县| 静乐县| 余干县| 澳门| 桂阳县| 义乌市| 内江市| 镇原县| 临猗县| 铜川市| 洛浦县| 盐山县| 松桃| 汉源县| 德庆县| 普兰县| 凯里市| 大同市| 朝阳县| 盐城市| 邓州市| 万年县| 沾化县| 宜阳县| 五家渠市| 稻城县| 卫辉市| 江北区| 九龙城区| 永康市| 普陀区| 巴塘县|