Photoshop图像处理算法—自动对比度和自动色调(自动色阶)

1、原理部分

2、程序部分(matlab)

自动色调

clc;clear;close all;

img=imread('IMG_0950_cut.jpg');

Image=double(img)/255;

figure(1);

imshow(Image);

%%

R=Image(:,:,1);

G=Image(:,:,2);

B=Image(:,:,3);

percent=0.001;

%%

Image_out(:,:,1)=Auto_Tune(R, percent);

Image_out(:,:,2)=Auto_Tune(G, percent);

Image_out(:,:,3)=Auto_Tune(B, percent);

figure(2);

imshow(Image_out);

function I_out=Auto_Tune(I, percent)

%%% the tonal range of the input image is 0-1.

[row, col]=size(I);

%%%sort the input image value

I_sort=sort(I(:));

I_out=I;

%%% based on the clipping percentage,

%%% compute the upper and lower boundaries

if (percent==0)

I_min=min(I_sort)

I_max=max(I_sort)

else

I_min=I_sort(floor(row*col*percent))

I_max=I_sort(floor(row*col*(1-percent)))

end

for i=1:row

for j=1:col

if(I(i,j)

I_out(i,j)=0;

elseif(I(i,j)>I_max)

I_out(i,j)=1;

else

I_out(i,j)=(I(i,j)-I_min)/(I_max-I_min);

end

end

end

-----------------------------------------------------------------------------

自动对比度

%运行文件clc;clear;close all;

img=imread('lena.jpg');

Image=double(img)/255;

figure(1);

imshow(Image);

%%

R=Image(:,:,1);

G=Image(:,:,2);

B=Image(:,:,3);

percent=0.001;

%获得各个通道的最大最小值

[R_max,R_min] = findMaxMin(R,percent);

[G_max,G_min] = findMaxMin(G,percent);

[B_max,B_min] = findMaxMin(B,percent);

%求出统一的最大最小值

Max=max(max(R_max,G_max),B_max);

Min=min(min(R_min,G_min),B_min);

%%

Image_out(:,:,1)=Auto_Tune(R,Max,Min);

Image_out(:,:,2)=Auto_Tune(G,Max,Min);

Image_out(:,:,3)=Auto_Tune(B,Max,Min);

figure(2);

imshow(Image_out);

%求出各个通道的按照比例裁切的最大最小值

function [I_max,I_min] = findMaxMin(I,percent )

%%%sort the input image value

I_sort=sort(I(:));

[row, col]=size(I);

%%% based on the clipping percentage,

%%% compute the upper and lower boundaries

if (percent==0)

I_min=min(I_sort);

I_max=max(I_sort);

else

I_min=I_sort(floor(row*col*percent));

I_max=I_sort(floor(row*col*(1-percent)));

end

end

%根据统一的最大最小值进行变换

function I_out=Auto_Tune(I,Max,Min)

%%% the tonal range of the input image is 0-1.

[row, col]=size(I);

I_out=I;

for i=1:row

for j=1:col

if(I(i,j)

I_out(i,j)=0;

elseif(I(i,j)>Max)

I_out(i,j)=1;

else

I_out(i,j)=(I(i,j)-Min)/(Max-Min);

end

end

end

3、运行结果

图1 原图

图 2 自动对比度

图 3 自动色调

版权声明:本文为博主原创文章,未经博主允许不得转载。

自动色阶算法C语言,Photoshop图像处理算法—自动对比度跟自动色调(自动色阶)...相关推荐

  1. c语言考试算法,c语言考试常用算法docx.docx

    c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...

  2. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  3. 函数c语言桶排算法,C语言基本排序算法之桶式排序实例

    本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...

  4. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)

    Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...

  5. c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)

    1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...

  6. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)

    算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...

  7. 用c语言编写银行家算法,C语言实现银行家算法

    <C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...

  8. 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)

    最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...

  9. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

最新文章

  1. [J2ME]Nokia播放音乐时发生MediaException的解决办法
  2. 【flask学习笔记】flask与HTTP,flask与mongodb交互,用手机输入局域网ip访问flask界面
  3. Java多线程学习笔记一
  4. oracle数据库实例,数据库的理解
  5. MySQL百万级高并发网站优化
  6. oKit在项目管理方面能带来哪些好处
  7. tomcat + apache组合配置
  8. 独门绝技:一招克死所有病毒(转贴,没有用过)
  9. android游戏勿扰,App+1 | Android 勿扰自动化,看剧、游戏更「沉浸」:NoPopping
  10. cad帧数测试软件,怎样让cad运行速度更快_cad如何设置运行更流畅
  11. 纠错码与魔术(一)——纠错码与汉明码简介
  12. MySQL-5-MySQL的使用
  13. android微信支付指纹支付密码错误,安卓微信支付怎么设置指纹锁
  14. 说说家乡的旅游景点吧...
  15. 解决:openstack-dashboard-登陆后显示报错
  16. 【游戏设计图形学】模拟自然界火焰的方法
  17. 教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
  18. 重新认识受控和非受控组件
  19. [洪流学堂]Hololens开发:Unity3d与Visual Studio最佳实践
  20. 【hello C++】初识C++(下)

热门文章

  1. vb开发使用mysql_使用VB开发SQL Server应用程序
  2. Handle-Message的发送和处理
  3. C语言递归分形实验-毕达哥拉斯树
  4. Question and Answer from ElasticSearch
  5. 舞界联盟- -现代舞舞蹈教程- -旗袍配花伞,别有一番风味
  6. canvas 清除画布
  7. Android应用程序是如何请求SurfaceFlinger服务渲染一个Surface的?
  8. MVC模式使用JDBC查询数据库中表的记录
  9. Classes and Objects > Classes > Passing Information to a Method or a Constructor
  10. C# 企业微信接口发送消息出现错误代码60020解决方案,希望能给大家带来帮助。