‘壹’ 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函数。该函数使用最大类间方差法得到一个阈值, 利用这个阈值进行图像二值化通常是十分有效的。
