『壹』 matlab如何提取圖像中某一顏色並二值化
就將兩種方法:1、 根據黃色在rgb各個分量的分布范圍直接提取,再合並。但可能會加入不需要的部分。
2. 實現采樣,利用顏色模型(可參考簡易高斯模型),自動選取
『貳』 圖象二值化 在 photoshop 上能操作么 怎麼操作
PhotoShop中是有二值化這種圖片處理的。操作步驟:
1、Image->Adjustments->Threshold (英文版)。
2、圖像->調整->閾值 (中文版)。
3、然後調整閾值色階就可以看到二值化的效果了。

『叄』 photoshop怎麼把圖片轉為二值圖
給你我最專業的解答:
二值很明顯就是兩種顏色的圖,比如黑白圖,而不是你說的灰度圖,灰度圖也有256色,或者更高。
如果你想得到二值圖,有以下幾種方法,得到的最終圖片也是不一樣的。
1.用PS打開圖片後,直接「另存為web和設備所有格式」然後選擇gif格式,後面顏色那欄填2 然後保存就行了。這種方法得到的不一定是黑色圖,可能是一種彩色加白色的圖。
2.如果你想得到黑白圖,可以先在PS里的「圖像」「調整」「閾值」改好效果後,然後再另存為gif格式,存的時候注意把顏色改為2
附註:
二值圖像 binary image
是指每個像素不是黑就是白,其灰度值沒有中間過渡的圖像。二值圖像一般用來描述文字或者圖形,其優點是佔用空間少,缺點是,當表示人物,風景的圖像時,二值圖像只能描述其輪廓,不能描述細節。
『肆』 如何將圖像二值化
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#pragma pack(1)
#define R 30
#define G 59
#define B 11
#define ONE 255
#define ZERO 0
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef long LONG;
typedef unsigned char BYTE;
typedef struct tagBITMAPFILEHEADER { // bmfh
WORD bfType; // 點陣圖文件的類型,必須為BM
DWORD bfSize; // 點陣圖文件的大小,以位元組為單位
WORD bfReserved1; // 點陣圖文件保留字,必須為0
WORD bfReserved2; // 點陣圖文件保留字,必須為0
DWORD bfOffBits; // 點陣圖數據的起始位置,以相對於點陣圖文件頭的偏移量表示,以位元組為單位
} BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER{ // bmih
DWORD biSize; // 本結構所佔用位元組數
LONG biWidth; // 點陣圖的寬度,以像素為單位
LONG biHeight; // 點陣圖的高度,以像素為單位
WORD biPlanes; // 目標設備的級別,必須為1
WORD biBitCount;// 每個像素所需的位數,必須是1(雙色),4(16色),8(256色)或24(真彩色)之一
DWORD biCompression; // 點陣圖壓縮類型,必須是 0(不壓縮),1(BI_RLE8壓縮類型)或2(BI_RLE4壓縮類型)之一
DWORD biSizeImage; // 點陣圖的大小,以位元組為單位
LONG biXPelsPerMeter; // 點陣圖水平解析度,每米像素數
LONG biYPelsPerMeter; // 點陣圖垂直解析度,每米像素數
DWORD biClrUsed;// 點陣圖實際使用的顏色表中的顏色數
DWORD biClrImportant;// 點陣圖顯示過程中重要的顏色數
} BITMAPINFOHEADER;
typedef struct tagPOINT{
BYTE b;
BYTE g;
BYTE r;
} POINT;
int quit();
int quit()
{
puts("File's format wrong");
exit(0);
}
void main (int argc,char *argv[])
{
FILE *fi,*fo;//I/O file
char fin[80],fon[80];//I/O file name
BYTE buff,o=0;
BITMAPFILEHEADER bf;
BITMAPINFOHEADER bi;
POINT **p;
int i,j,t;
if(argc<3)
{
printf("orginfile name:");
scanf("%s",fin);
printf("resultfile name:");
scanf("%s",fon);
}else{
sscanf(argv[1],"%s",fin);
sscanf(argv[2],"%s",fon);
}
if(argc==4)
sscanf(argv[4],"%d",&t);
else{
printf("theshold [0,255]:");
scanf("%d",&t);
}
if (((fi=fopen(fin,"rb"))==NULL)||((fo=fopen(fon,"wb"))==NULL))
{
puts("\nfile open failed");
return;
}
fread(&bf,sizeof(bf),1,fi);
fread(&bi,sizeof(bi),1,fi);
if(bf.bfType!=0x4d42) quit();
if(bf.bfReserved1!=0x0000) quit();
if(bf.bfReserved2!=0x0000) quit();
if(bi.biClrImportant!=0) quit();
if(bi.biBitCount!=0x18) quit();
if(bi.biCompression!=0) quit();
if(bi.biPlanes!=1) quit();
bf.bfSize=54+1024+bi.biWidth*bi.biHeight;
bf.bfOffBits=54+1024;
if(bi.biWidth%4==0)
bi.biSizeImage=bi.biWidth*bi.biHeight*bi.biBitCount/8;
else
bi.biSizeImage=(bi.biWidth-(bi.biWidth%4)+4)*bi.biHeight*bi.biBitCount/8;
bi.biBitCount=8;
p=(POINT **)malloc(sizeof(POINT *)*bi.biHeight);
for (i=0;i<bi.biHeight;i++)
*(p+i)=(POINT *)malloc(sizeof(POINT)*bi.biWidth);
//分配失敗後果自負!
fwrite(&bf,sizeof(bf),1,fo);
fwrite(&bi,sizeof(bi),1,fo);
for (i=0;i<bi.biHeight;i++)
for (j=0;j<bi.biWidth;j++)
fread(*(p+i)+j,sizeof(POINT),1,fi);
for (i=0x00,buff=0x00;i<=0xFF;i++,buff++)
{
fwrite(&buff,sizeof(buff),1,fo);
fwrite(&buff,sizeof(buff),1,fo);
fwrite(&buff,sizeof(buff),1,fo);
fwrite(&o,sizeof(o),1,fo);
}
for (i=0;i<bi.biHeight;i++)
for (j=0;j<bi.biWidth;j++)
{
buff=((*(p+i)+j)->r*R+(*(p+i)+j)->g*G+(*(p+i)+j)->b*B)/100;
buff=(buff>=t?ONE:ZERO)
fwrite(&buff,sizeof(buff),1,fo);
}
fclose(fo);
}
『伍』 matlab怎麼二值化
matlab中,使用im2bw()函數對圖片進行二值化。
matlab中DIP工具箱函數im2bw使用閾值(threshold)變換法把灰度圖像(grayscale image)轉換成二值圖像。所謂二值圖像, 一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。 當然, 也可以是其他任意兩種顏色的組合。
在matlab命令行中鍵入doc im2bw或help im2bw即可獲得該函數的幫助信息。
im2bw()的語法如下:
1、BW = im2bw(I, level)
2、BW = im2bw(X, map, level)
3、BW = im2bw(RGB, level)
其中level就是設置閾值的。level取值范圍[0, 1]。

(5)如何將圖片顏色改成二值化擴展閱讀:
matlab中,使用graythresh()函數智能建議二值化所需的閾值:
在matlab中使用im2bw函數進行圖像二值化處理時(將圖像轉換為 二值圖像), 人為設定閾值並不總是十分有效。matlab工具箱為我們提供了graythresh函數。該函數使用最大類間方差法得到一個閾值, 利用這個閾值進行圖像二值化通常是十分有效的。
