/*
在數位彩色照片裡,每一個畫素(pixel)的顏色是由紅、綠與藍三個顏色混合而成的。
通常rgb的強度可用0~255的數值來表示。數值越大代表該顏色的強度越強。
照片的維度是二維因此恰可用一個二維的矩陣來表示它
每一個矩陣的元素即代表了一個畫素。
因每一個畫素必須是由紅、綠與藍三個顏色所組成
於是要正確的表示一張數為彩色照片的資料
最方便的方式就是利用三維矩陣。
下面是一個三維矩陣的示意圖,它代表了一個3*3畫素的彩色影像:
(18 172 127) | (89 133 36) | (175 8 43)
(234 224 113) |(128 151 40) | (35 48 75)
(141 28 192) |(127 40 234) | (131 228 98)
紅色 綠色 藍色
(a) 試以一個三維的陣列來描述此一影像。
(b) 試將每一個畫素中的r值加30。若加30之後的值超過255,則以255取代之。
(c) 試將每一個畫素中的g值減30。若減30之後的值小 於0,則以0取代之。
P.S.(c)沿用(b)的值
*/
public class ArrayEx4 {
//三維陣列
int A[][][]=
{
{ //R值(為第0維)
{18,172,127},
{234,224,113},
{141,28,192}
},
{ //G值(為第1維)
{89,133,36},
{128,151,40},
{127,40,234}
},
{ //B值(為第2維)
{175,8,43},
{35,48,75},
{131,228,98}
}
};
public void print(){
for(int i=0;i<A.length;i++){
for(int j=0;j<A[i].length;j++){
for(int k=0;k<A[i][j].length;k++){
System.out.print("A["+i+"]"+"["+j+"]"+"["+k+"]="+A[i][j][k]+"\t");
}
System.out.println(); //換行
}
}
}
public void Redadd(){
for(int i=0;i<A.length;i++){
for(int j=0;j<A[i].length;j++){
for(int k=0;k<A[i][j].length;k++){
if(i==0){ //找出R值
A[i][j][k]+=30; //R值都加30
if(A[i][j][k]>255){
A[i][j][k]=255; //超過255的值一律等於255
}
}
}
}
}
}
public void Greensub(){
for(int i=0;i<A.length;i++){
for(int j=0;j<A[i].length;j++){
for(int k=0;k<A[i][j].length;k++){
if(i==1){ //找出G值
A[i][j][k]-=30;
if(A[i][j][k]<0){
A[i][j][k]=0;
}
}
}
}
}
}
public static void main(String[] args) {
ArrayEx4 arr4=new ArrayEx4();
arr4.Redadd();
arr4.Greensub();
arr4.print();
}
}
沒有留言:
張貼留言