自动色阶算法C语言,Photoshop图像处理算法—自动对比度跟自动色调(自动色阶)...
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图像处理算法—自动对比度跟自动色调(自动色阶)...相关推荐
- c语言考试算法,c语言考试常用算法docx.docx
c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...
- c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言
FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...
- 函数c语言桶排算法,C语言基本排序算法之桶式排序实例
本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...
- 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)
Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...
- c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)
1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...
- 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)
算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...
- 用c语言编写银行家算法,C语言实现银行家算法
<C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...
- 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)
最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...
- shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)
Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...
最新文章
- [J2ME]Nokia播放音乐时发生MediaException的解决办法
- 【flask学习笔记】flask与HTTP,flask与mongodb交互,用手机输入局域网ip访问flask界面
- Java多线程学习笔记一
- oracle数据库实例,数据库的理解
- MySQL百万级高并发网站优化
- oKit在项目管理方面能带来哪些好处
- tomcat + apache组合配置
- 独门绝技:一招克死所有病毒(转贴,没有用过)
- android游戏勿扰,App+1 | Android 勿扰自动化,看剧、游戏更「沉浸」:NoPopping
- cad帧数测试软件,怎样让cad运行速度更快_cad如何设置运行更流畅
- 纠错码与魔术(一)——纠错码与汉明码简介
- MySQL-5-MySQL的使用
- android微信支付指纹支付密码错误,安卓微信支付怎么设置指纹锁
- 说说家乡的旅游景点吧...
- 解决:openstack-dashboard-登陆后显示报错
- 【游戏设计图形学】模拟自然界火焰的方法
- 教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
- 重新认识受控和非受控组件
- [洪流学堂]Hololens开发:Unity3d与Visual Studio最佳实践
- 【hello C++】初识C++(下)
热门文章
- vb开发使用mysql_使用VB开发SQL Server应用程序
- Handle-Message的发送和处理
- C语言递归分形实验-毕达哥拉斯树
- Question and Answer from ElasticSearch
- 舞界联盟- -现代舞舞蹈教程- -旗袍配花伞,别有一番风味
- canvas 清除画布
- Android应用程序是如何请求SurfaceFlinger服务渲染一个Surface的?
- MVC模式使用JDBC查询数据库中表的记录
- Classes and Objects > Classes > Passing Information to a Method or a Constructor
- C# 企业微信接口发送消息出现错误代码60020解决方案,希望能给大家带来帮助。