3.4.1 ColorMatrix
5034 단어 Matrix
마찬가지로 ColorMatrix는 비슷한 방식으로 작동합니다.이것은 그림의 픽셀을 조작할 수 있는 디지털 그룹이다.그러나 x, y 및 z 좌표와 달리 색상 값 - 각 픽셀의 Red(빨간색), Green(녹색), Blue(파란색) 및 알파 값을 조작합니다.
매개 변수가 없는 구조 함수를 호출하여 기본 ColorMatrix 객체를 만들 수 있습니다.
1 ColorMatrix cm=new ColorMatrix();
ColorMatrix 객체를 사용하여 ColorMatrix ColorFilter 객체를 구축하고 Paint 객체에 적용하여 Canvas 객체의 드로잉 내용을 변경하는 데 사용할 수 있습니다.
1 ColorMatrix cm=new ColorMatrix();
2 ColorMatrixColorFilter cmf=new ColorMatrixColorFilter(cm);
3 paint.setColorFilter(cmf);
ColorMatrix 객체를 시험할 수 있도록 그림 선택 인스턴스의 드로잉 섹션에 간단하게 삽입할 수 있습니다.
1 Bitmap bmp=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageFileUri),null,bmpBitmapFactoryOptions);
2 Bitmap alteredBitmap=Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
3 alteredBitmap=Bitmap.createBitmap(bmp.getWidth()*2, bmp.getHeight(), bmp.getConfig());
4 Canvas canvas=new Canvas(alteredBitmap);
5 Paint paint=new Paint();
6 ColorMatrix cm=new ColorMatrix();
7 paint.setColorFilter(new ColorMatrixColorFilter(cm));
8 Matrix matrix=new Matrix();
9 canvas.drawBitmap(bmp, matrix, paint);
10 alteredImageView.setImageBitmap(alteredBitmap);
11 chosenImageView.setImageBitmap(bmp);
기본 ColorMatrix 객체는 기본 Matrix 객체처럼 적용할 때 이미지가 변경되지 않는 이른바 ID입니다.다음 그룹에 포함된 내용을 보면 그들이 어떻게 일을 하는지 이해할 수 있습니다.
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
이것은 20개의 부동점수를 포함하는 수조이다.첫 번째 행에는 단일 픽셀의 빨간색 부분에서, 두 번째 행에는 녹색 부분, 세 번째 행에는 파란색 부분, 마지막 행에는 픽셀의 알파 값이 포함됩니다.
각 행에서 첫 번째 숫자는 픽셀의 빨간색 값과 연관된 승수, 두 번째 숫자는 녹색 값과 연관된 승수, 세 번째 숫자는 파란색, 네 번째 숫자는 알파 값이며 마지막 숫자는 어떤 값에도 곱하지 않습니다.이 값들을 모두 합쳐서 그들이 조작하고 있는 픽셀을 바꾸세요.
빨간색 128, 파란색 128, 녹색 128, 알파 0 등의 중간 회색조 픽셀이 있다고 가정해 보십시오.위의 색상 행렬을 통해 이 픽셀을 조작하면 수학 공식은 다음과 같이 표시됩니다.
새 빨간색 값 = 1*128+0*128+0*128+0*0+0
새 녹색 값 = 0*128+1*128+0*128+0*0+0
새 파란색 값 = 0*128+0*128+1*128+0*0+0
새 알파 값 = 0*128+0*128+0*128+0*128+1*0+0
모든 값이 128로 설정된 상태로 유지됩니다.픽셀에 사용되는 모든 색상 변수의 경우 각 행에는 작업을 나타내는 색상의 위치에 1이 있고 다른 위치에는 0이 있기 때문입니다.
만약 한 폭의 그림이 이전보다 두 배만 빨갛게 보이고 싶다면, 모든 픽셀을 조작하는 빨간색 값의 숫자를 2로 늘려 1을 대체할 수 있다.이것은 행렬의 빨간색 값을 배로 늘릴 것이다.
2 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
코드에서 이 기능을 수행하려면 다음과 같이 하십시오.
1 ColorMatrix cm=new ColorMatrix();
2 cm.set(new float[]{
3 2,0,0,0,0,
4 0,1,0,0,0,
5 0,0,1,0,0,
6 0,0,0,1,0
7 });
8 paint.setColorFilter(new ColorMatrixColorFilter(cm));
따라서 이 행렬을 통해 모든 색을 유사하게 처리할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Matrix RGB LED Funduino를 Colorduino에서 사용Matrix LED가 장착된 ATmega328P 보드 Funduino를 사용해 봅시다. Funduino는 Colorduino, RGB LED 8x8 Matrix Board with Driver Shield for A...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.