導航:首頁 > 編程語言 > java圖片灰度

java圖片灰度

發布時間:2023-09-01 20:06:02

A. 有大俠知道java或是js或是css中怎麼將單通道灰度圖片與三通道灰度圖片嗎有沒有什麼相關的演算法

int ImageStretchByHistogram(IplImage *src1,IplImage *dst1) 
/*************************************************
Function: 通過直方圖變換進行圖像增強旁團御,將圖像灰度的或枯域值拉伸運岩到0-255
src1: 單通道灰度圖像
dst1: 同樣大小的單通道灰度圖像
*************************************************/
{
assert(src1->width==dst1->width);
double p[256],p1[256],num[256];

memset(p,0,sizeof(p));
memset(p1,0,sizeof(p1));
memset(num,0,sizeof(num));
int height=src1->height;
int width=src1->width;
long wMulh = height * width;

//statistics
for(int x=0;x<src1->width;x++)
{
for(int y=0;y<src1-> height;y++){
uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
num[v]++;
}
}
//calculate probability
for(int i=0;i<256;i++)
{
p[i]=num[i]/wMulh;
}

//p1[i]=sum(p[j]); j<=i;
for(int i=0;i<256;i++)
{
for(int k=0;k<=i;k++)
p1[i]+=p[k];
}

// histogram transformation
for(int x=0;x<src1->width;x++)
{
for(int y=0;y<src1-> height;y++){
uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
((uchar*)(dst1->imageData + dst1->widthStep*y))[x]= p1[v]*255+0.5;
}
}
return 0;
}

void CCVMFCView::OnImageAdjustContrast()
{
if(workImg->nChannels>1)
OnColorToGray();
Invalidate();
dst=cvCreateImage(cvGetSize(workImg),workImg->depth,workImg->nChannels);
ImageStretchByHistogram(workImg,dst);
m_dibFlag=imageReplace(dst,&workImg);
Invalidate();
}

這個是C++代碼格式的,你可以參考一下思路

B. java 根據圖片的rgb求灰度值

public int filterRGB(int x, int y, int rgb) {

int a = rgb & 0xff000000;//將最高位(24-31)的信息(alpha通道)存儲到a變數
int r = (rgb >> 16) & 0xff;//取出次高位(16-23)紅色分量的信息
int g = (rgb >> 8) & 0xff;//取出中位(8-15)綠色分量的信息
int b = rgb & 0xff;//取出低位(0-7)藍色分量的信息
rgb = (r * 77 + g * 151 + b * 28) >> 8; // NTSC luma,算出灰度值
return a | (rgb << 16) | (rgb << 8) | rgb;//將灰度值送入各個顏色分量
}

C. java 中如何獲得灰度圖像的像素值,getRGB和getRaster有什麼區別

關於圖像像素值,我想要先講一下Java中如何組織一個圖像對象BufferedImage的,
一個BufferedImage的像素數據儲存在Raster中,ColorModel裡面儲存顏色空間,類型等
信息,當前Java只支持一下三種圖像格式- JPG,PNG,GIF,如何向讓Java支持其它格式,首
先要 完成Java中的圖像讀寫介面,然後打成jar,加上啟動參數- Xbootclasspath/p
newimageformatIO.jar即可。
取得BufferedImage的代碼如下:
File file = new File("D:\\test\\blue_flower.jpg");
BufferedImage image = ImageIO.read(file);

取得像素使用getRGB,代碼如下:
int type= image.getType();
if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
return (int [])image.getRaster().getDataElements(x, y, width, height, pixels );
else
return image.getRGB( x, y, width, height, pixels, 0, width );

寫入像素,才可能用到getRaster,在type為ARGB 或RGB時,必須使用getRaster().setDataElements方式設置,其他格式直接setRGB,代碼如下:
int type= image.getType();
if ( type ==BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
image.getRaster().setDataElements(x, y, width, height, pixels );
else
image.setRGB(x, y, width, height, pixels, 0, width );

D. java 8位灰度圖的灰度值怎麼獲取

publicintfilterRGB(intx,inty,intrgb){
inta=rgb&0xff000000;//將最高位(24-31)的信息(alpha通道)存儲到a變數
intr=(rgb>>16)&0xff;//取出次高位(16-23)紅色分量的信息
intg=(rgb>>8)&0xff;//取出中位(8-15)綠色分量的信息
intb=rgb&0xff;//取出低位(0-7)藍色分量的信息
rgb=(r*77+g*151+b*28)>>8;//NTSCluma,算出灰度值
returna|(rgb<<16)|(rgb<<8)|rgb;//將灰度值送入各個顏色分量
}

閱讀全文

與java圖片灰度相關的資料

熱點內容
嵌入式圖像演算法 瀏覽:325
伺服器如何訪問伺服器失敗 瀏覽:873
android進度球 瀏覽:999
Linux造成xfs文件夾 瀏覽:455
華為手機怎麼修改wifi加密類型 瀏覽:248
伺服器封口是什麼意思 瀏覽:741
有限元分析是演算法嗎 瀏覽:901
空氣壓縮機性能曲線 瀏覽:20
京城程序員2019 瀏覽:403
android新系統 瀏覽:510
安卓80有什麼bug 瀏覽:678
如何做單機伺服器 瀏覽:943
校訊通查成績怎麼顯示伺服器異常 瀏覽:882
冰箱壓縮機工作壓力是多少 瀏覽:408
程序員20多平米租房 瀏覽:451
電工知識用線的演算法 瀏覽:338
極光推送php伺服器端 瀏覽:5
怎麼用命令方塊控制僵屍 瀏覽:774
大型雲伺服器有哪些 瀏覽:466
解壓版三國街機 瀏覽:424