1. 程式人生 > >影象處理------調整亮度與飽和度

影象處理------調整亮度與飽和度

什麼是亮度:

簡單點說一幅影象的亮度屬性是影象的RGB值的大小,RGB各個值越大亮度越高RGB

分量取值範圍為0~255之間。調整影象亮度。

什麼是飽和度:

飽和度是是指顏色的強度,調整飽和度可以修正過度曝光或者未充分曝光的圖片。使

影象看上去更加自然。

基本思想:

通常在RGB色彩空間調整亮度與飽和度不是很直觀,而HSL彩色空可以很直觀表示出

每個畫素的飽和度與亮度。所以首先讀取影象的畫素RGB值然後再轉換到HSL空間得

到飽和度與亮度值,調整以後再從HSL空間轉換到RGB空間的RGB值,對每個畫素完

成這樣的調整就完成影象的亮度與飽和度調整。關於RGB與HSL色彩空間的轉換

看這裡:http://en.wikipedia.org/wiki/HSL_color_space

程式效果:

濾鏡原始碼:

  1. package com.gloomyfish.filter.study;  
  2. import java.awt.image.BufferedImage;  
  3. /** 
  4.  * http://en.wikipedia.org/wiki/HSL_color_space 
  5.  * @author gloomy fish 
  6.  * @date 2012-09-26  
  7.  * 
  8.  */
  9. publicclass HSLFilter extends AbstractBufferedImageOp {  
  10.     publicfinalstaticdouble c1o60  = 1.0 / 60.0;  
  11.     publicfinalstatic
    double c1o255 = 1.0 / 255.0;  
  12.     privatedouble hue;  
  13.     privatedouble saturation;  
  14.     privatedouble lightness;  
  15.     public HSLFilter() {  
  16.         System.out.println("Hue Filter");  
  17.     }  
  18.     publicdouble getHue() {  
  19.         return hue;  
  20.     }  
  21.     publicvoid setHue(double hue) {  
  22.         while (hue < 
    0.0) {  
  23.             this.hue += 360;  
  24.         }  
  25.         while (hue >= 360.0) {  
  26.             this.hue -= 360;  
  27.         }  
  28.     }  
  29.     publicdouble getSaturation() {  
  30.         return saturation;  
  31.     }  
  32.     publicvoid setSaturation(double saturation) {  
  33.         if((saturation >= -100.0) && (saturation <= 100.0)) {  
  34.             this.saturation = saturation;  
  35.         }  
  36.     }  
  37.     publicdouble getLightness() {  
  38.         return lightness;  
  39.     }  
  40.     publicvoid setLightness(double lightness) {  
  41.         if((lightness >= -100.0) && (lightness <= 100.0)) {  
  42.             this.lightness = lightness;  
  43.         }  
  44.     }  
  45.     @Override
  46.     public BufferedImage filter(BufferedImage src, BufferedImage dest) {  
  47.         int width = src.getWidth();  
  48.         int height = src.getHeight();  
  49.         double sat = 127.0d * saturation / 100.0d;  
  50.         double lum = 127.0d * lightness / 100.0d;  
  51.         if ( dest == null )  
  52.             dest = createCompatibleDestImage( src, null );  
  53.         int[] inPixels = newint[width*height];  
  54.         int[] outPixels = newint[width*height];  
  55.         getRGB( src, 00, width, height, inPixels );  
  56.         double min, max, dif, sum;  
  57.         double f1, f2;  
  58.         int index = 0;  
  59.         double h, s, l;  
  60.         double v1, v2, v3, h1;  
  61.         for(int row=0; row<height; row++) {  
  62.             int ta = 0, tr = 0, tg = 0, tb = 0;  
  63.             for(int col=0; col<width; col++) {  
  64.                 index = row * width + col;  
  65.                 ta = (inPixels[index] >> 24) & 0xff;  
  66.                 tr = (inPixels[index] >> 16) & 0xff;  
  67.                 tg = (inPixels[index] >> 8) & 0xff;  
  68.                 tb = inPixels[index] & 0xff;  
  69.                 // convert to HSL space
  70.                 min = tr;  
  71.                 if (tg < min)   
  72.                     min = tg;  
  73.                 if (tb < min)   
  74.                     min = tb;  
  75.                 max = tr;  
  76.                 f1 = 0.0;  
  77.                 f2 = tg - tb;  
  78.                 if (tg > max) {  
  79.                    max = tg;  
  80.                    f1 = 120.0;  
  81.                    f2 = tb - tr;  
  82.                 }  
  83.                 if (tb > max) {  
  84.                    max = tb;  
  85.                    f1 = 240.0;  
  86.                    f2 = tr - tg;  
  87. 相關推薦

    影象處理------調整亮度飽和度

    什麼是亮度:簡單點說一幅影象的亮度屬性是影象的RGB值的大小,RGB各個值越大亮度越高RGB分量取值範圍為0~255之間。調整影象亮度。什麼是飽和度:飽和度是是指顏色的強度,調整飽和度可以修正過度曝光或

    影象處理亮度對比度

    處理影象經常會對影象色彩進行增強,這就是改變影象的亮度和對比度。本章基於opencv對影象的亮度和對比度進行處理操作。其實,這是對影象的每一個畫素點進行相應的操作。 上面這個公式可以很好的解釋對影象

    影象處理--卷積濾波器的聯絡

    卷積與濾波器的聯絡(??)   吳恩達解釋瞭如何實現卷積運算元(convolution operator),並展示了它如何在影象中檢測邊緣。他還介紹了其他濾波器,例如Sobel 濾波器,它賦予邊緣中心畫素更大權重。   根據吳恩達的解釋,濾波器的權重不應該人工設計,而應該使用爬山演算法(

    影象處理、分析機器視覺》(第4版)閱讀筆記——第四章 影象分析的資料結構

    4.1 影象資料表示的層次 共分為四個層次: 最底層的表示:圖示影象(iconic images),由含有原始資料的影象組成,原始資料也就是畫素亮度資料的整數矩陣。(預處理的部分) 第二層的表示:分割影象(segmented images)。 第三層:幾何表示(geo

    影象處理、分析機器視覺》(第4版)閱讀筆記——第六章 分割Ⅰ

    分割是處理影象資料前最重要的步驟之一,其主要目標是將影象劃分為與其中含有的真實世界的物體或區域強相關性的組成部分。 分割方法根據所使用的主要特徵可劃分為三組:第一組是有關影象或部分的全域性知識(global knowledge),這一般由影象特徵的直方圖來表達。第二部分是基

    影象處理——目標檢測前背景分離

    前提     運動目標的檢測是計算機影象處理與影象理解領域裡一個重要課題,在機器人導航、智慧監控、醫學影象分析、視訊影象編碼及傳輸等領域有著廣泛的應用。                       

    影象處理、分析機器視覺》(第4版)閱讀筆記——第五章 影象處理

    預處理不會增加影象的資訊量,一般會降低熵。因此,從資訊理論的角度看,最好的預處理是沒有預處理:避免(消除)預處理的最好途徑是著力於高質量的影象獲取。實際影象中的屬於一個物體的相鄰畫素通常具有相同的或類似的亮度值,因此如果一個失真了的畫素可以從影象中被挑出來,它也許就可以用其鄰接畫素的平均值來複原。

    影象處理、分析機器視覺》(第4版)閱讀筆記——第三章 影象及其數學物理背景

    3.1 概述 3.1.1 線性 向量(線性)空間(vector(linear) space) 3.1.2 狄拉克(Dirac)分佈和卷積 理想的衝擊是一個重要的輸入訊號,影象平面上的理想衝擊是用狄拉克分佈(Dirac distribution)定義的,。相當於訊號處理中的單位階躍函式

    影象處理、分析機器視覺》(第4版)閱讀筆記——第二章 影象及其表達性質

    2.1 影象及其表達與性質 在單色影象中最低值對應於黑,而最高值對應於白。在他們之間的亮度值是灰階(gray-level) 空間解析度(spatial resolution)是由影象平面上影象取樣點間的接近程度確定的。 頻譜解析度(spectral resolution)是由感測器獲得的

    數字影象處理三-亮度變換(1)

    這篇文章主要講解影象的亮度變換的基本原理,通過對影象的每個畫素值進行函式對映 G(x,y)=T(F(x,y));這裡主要介紹matlab中的rgb2gray函式和imadjust函式以及函式數學原理 rgb2gray rgb2gray函式用法: I =rgb2gray(RG

    影象處理 之 探索 驗證 拉普拉斯運算元(Laplace) Hessian矩陣特徵值 之間的關係

    目錄 引言       5.結論 引言       數學:驗證矩陣對角線元素和等於特徵值之和       應用而言:給定影象,計算他的H

    Linux影象處理高手―GIMPImageMagicK

    影象處理是多媒體應用中最重要一個部分,在Linux環境下,可以供選擇使用的影象處理軟體並不多。近來隨著Linux在桌面應用中的不斷壯大,一些影象處理軟體也開始從Windows、Mac OS中移植到了Linux環境下,其中最為著名的影象處理軟體CorelDraw就是一例。遺憾

    OpenCV-影象處理(06、調整影象亮度對比度)

    理論 影象變換可以看作如下: 畫素變換 – 點操作 鄰域操作 – 區域 調整影象亮度和對比度屬於畫素變換-點操作 g

    Unity Shader-後處理:簡單的顏色調整亮度飽和度,對比度)

    版權宣告:歡迎轉載,共同進步。請註明出處:http://blog.csdn.net/puppet_master https://blog.csdn.net/puppet_master/article/details/52423905   好久沒堅持寫blog了,是時候開始擼一波新博

    影象處理(1)——對比度和亮度調整

    1.內容 設計一個Sigmoid函式,實現對影象的對比度調整; 使用opencv視窗系統的slider控制元件,互動改變Sigmoid函式的引數,實現不同程度的對比度調整; 2.方法 一次函式方法 想要調整圖片的對比度,就要對圖片中的畫素進行操作,改變畫素的值來

    【數字影象處理系列二】基本概念:亮度、對比度、飽和度、銳化、解析度

    本系列python版本:python3.5.4 本系列opencv-python版本:opencv-python3.4.2.17 本系列使用的開發環境是jupyter notebook,是一個python的互動式開發環境,測試十分方便,並集成了vim

    使用OpenCV進行影象處理-改變影象亮度對比度

    通過OpenCV,製作一個有關影象處理的在Linux下的軟體。 製作可以自動處理影象亮度的簡單軟體。 開發環境:CodeBlocks #include <iostream> #incl

    數字影象處理(3)---亮度對比度

    亮度 亮度是一個相對的概念。這取決於你的視覺感受。因為亮度是一個相對的概念,所以亮度可以定義發光體(反光體)表面發光(反光)強弱的物理量。在某些情況下我們很容易地說,影象是明亮的,在某些情況下,它不容易察覺。(不要把亮度和光照度混淆) 例如 對比以下兩幅影象,並且比較哪個更

    C++影象處理 -- 亮度/對比度調整

    閱讀提示:    《C++影象處理》系列以程式碼清晰,可讀性為主,全部使用C++程式碼。    《Delphi影象處理》系列以效率為側重點,一般程式碼為PASCAL,核心程式碼採用BASM。    儘可能保持二者內容一致,可相互對照。文章中的BmpData.h標頭檔案。   

    Python影象處理特效:影象亮度調整

    開發十年,就只剩下這套架構體系了! >>>