Android影像灰度化、線性灰度變化、二值化處理方法
1、影像灰度化:
public Bitmap bitmap2Gray(Bitmap bmSrc) {
// 得到圖片的長和寬
int width = bmSrc.getWidth();
int height = bmSrc.getHeight();
// 建立目標灰度影像
Bitmap bmpGray = null;
bmpGray = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
// 建立畫布
Canvas c = new Canvas(bmpGray);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmSrc, 0, 0, paint);
return bmpGray;
}
2、對影像進行線性灰度變化
public Bitmap lineGrey(Bitmap image) {
//得到影像的寬度和長度
int width = image.getWidth();
int height = image.getHeight();
//建立線性拉昇灰度影像
Bitmap linegray = null;
linegray = image.copy(Config.ARGB_8888, true);
//依次迴圈對影像的畫素進行處理
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
//得到每點的畫素值
int col = image.getPixel(i, j);
int alpha = col & 0xFF000000;
int red = (col & 0x00FF0000) >> 16;
int green = (col & 0x0000FF00) >> 8;
int blue = (col & 0x000000FF);
// 增加了影像的亮度
red = (int) (1.1 * red + 30);
green = (int) (1.1 * green + 30);
blue = (int) (1.1 * blue + 30);
//對影像畫素越界進行處理
if (red >= 255)
{
red = 255;
}
if (green >= 255) {
green = 255;
}
if (blue >= 255) {
blue = 255;
}
// 新的ARGB
int newColor = alpha | (red << 16) | (green << 8) | blue;
//設定新影像的RGB值
linegray.setPixel(i, j, newColor);
}
}
return linegray;
}
3、對影像進行二值化
public Bitmap gray2Binary(Bitmap graymap) {
//得到圖形的寬度和長度
int width = graymap.getWidth();
int height = graymap.getHeight();
//建立二值化影像
Bitmap binarymap = null;
binarymap = graymap.copy(Config.ARGB_8888, true);
//依次迴圈,對影像的畫素進行處理
for (int i = 0; i < width; i++) {
for (int j = 0; j < height; j++) {
//得到當前畫素的值
int col = binarymap.getPixel(i, j);
//得到alpha通道的值
int alpha = col & 0xFF000000;
//得到影像的畫素RGB的值
int red = (col & 0x00FF0000) >> 16;
int green = (col & 0x0000FF00) >> 8;
int blue = (col & 0x000000FF);
// 用公式X = 0.3×R+0.59×G+0.11×B計算出X代替原來的RGB
int gray = (int) ((float) red * 0.3 + (float) green * 0.59 + (float) blue * 0.11);
//對影像進行二值化處理
if (gray <= 95) {
gray = 0;
} else {
gray = 255;
}
// 新的ARGB
int newColor = alpha | (gray << 16) | (gray << 8) | gray;
//設定新影像的當前畫素值
binarymap.setPixel(i, j, newColor);
}
}
return binarymap;
}
相關文章
- 【數字影象處理】五.MFC影象點運算之灰度線性變化、灰度非線性變化、閾值化和均衡化處理詳解
- python - 圖片灰度化、二值化Python
- Python-OpenCV 處理影象(七):影象灰度化處理PythonOpenCV
- 圖形影象處理-之-彩色轉化到灰度的速度優化優化
- Java影像灰度化的實現過程解析Java
- 影像演算法之直方圖均衡化(灰度影像)演算法直方圖
- 灰度影像直方圖均衡化公式及實現直方圖公式
- 影像的灰度變換——影像旋轉、影像的反色處理、對比度拉伸
- 使用matlab對影像進行二值化處理Matlab
- 灰度直方圖均衡化及其實現直方圖
- OpenCV計算機視覺學習(3)——影像灰度線性變換與非線性變換(對數變換,伽馬變換)OpenCV計算機視覺
- python將矩陣轉化為灰度圖Python矩陣
- Python-OpenCV 處理影象(八):影象二值化處理PythonOpenCV
- 視覺化影像處理 | 視覺化訓練器 | 影像分類視覺化
- 彩色影像二值化函式(matlab)函式Matlab
- 數字影像處理(一)之灰度轉換和卷積python實現卷積Python
- 處理多維度變化——橋接模式(二)橋接模式
- matlab中將RGB影象轉化為灰度影象Matlab
- 將彩色圖轉化為灰度圖及其原理介紹
- Flutter 異常處理方案——灰度與降級Flutter
- 數字影像處理實驗(四)影像銳化
- matlab影像對比度增強,拉伸和灰度變換Matlab
- 資料倉儲中維度變化和事實變化的處理方法
- Caffe簡單例程,影像處理,Netscope視覺化方法單例視覺化
- 一鍵實現自動化部署(灰度釋出)實踐
- 全鏈路灰度之 RocketMQ 灰度MQ
- FastJson 序列化處理 null 值ASTJSONNull
- matlab實現 線性拉伸某灰度影像的對比度 程式碼 對比度拉伸Matlab
- 執行計劃變化的處理
- 多表連線SQL優化如何處理SQL優化
- Perfectly Clear QuickDesk Mac(影像最佳化處理軟體)UIMac
- Splice方法的影像化理解
- CODING DevOps + Nginx-ingress 實現自動化灰度釋出devNginx
- EasyPR--開發詳解(3)高斯模糊、灰度化和Sobel運算元
- android音視訊指南-處理音訊輸出的變化Android音訊
- 原始碼分析springboot自定義jackson序列化,預設null值個性化處理返回值原始碼Spring BootNull
- 基於TRE文章的非線性模型化線性方法模型
- Python 影像處理 OpenCV (6):影像的閾值處理PythonOpenCV