簡體   English   中英

如何將像素轉換為灰度?

[英]How to convert pixels to gray scale?

好吧,我正在使用Processing ,它允許我以int[]訪問任何圖像的像素。 我現在想要做的是將圖像轉換為灰度。 每個像素的結構如下所示:

...........PIXEL............
[red | green | blue | alpha]
<-8--><--8---><--8--><--8-->  

現在,我需要將哪些轉換應用於單個RGB值以使圖像成為灰度?
我的意思是,我添加/減少多少使圖像灰度化?

更新

我在這里找到了一些方法: http//www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/

對於每個像素,紅色,綠色和藍色通道的值應為其平均值。 像這樣:

int red = pixel.R;
int green = pixel.G;
int blue = pixel.B;

pixel.R = pixel.G = pixel.B = (red + green + blue) / 3;

因為在你的情況下像素顏色似乎存儲在一個數組而不是屬性中,你的代碼最終可能看起來像:

int red = pixel[0];
int green = pixel[1];
int blue = pixel[2];

pixel[0] = pixel[1] = pixel[2] = (red + green + blue) / 3;

一般的想法是,當你有一個灰度圖像時,每個像素的顏色僅測量該點的光強度 - 我們感知的方式是每個顏色通道的強度平均值。

以下代碼加載圖像並循環顯示其像素 ,將飽和度更改為零並保持相同的色調亮度值。

PImage img;

void setup () {
    colorMode(HSB, 100);
    img = loadImage ("img.png");
    size(img.width,img.height);
    color sat = color (0,0,0);

    img.loadPixels();

    for (int i = 0; i < width * height; i++) {
        img.pixels[i]=color (hue(img.pixels[i]), sat, brightness(img.pixels[i]));
    }

    img.updatePixels();
    image(img,0,0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM