A. Matlab 灰度图像的阈值分割 不设定阈值的话matlab自动设定的阈值是多少
首先你的这个图是灰度图,只有在灰度图上才能进行二值化分析,看来楼主是小白喽im2bw(A1);这个命令其实省略了一步。全部的应该是im2bw(A1,level);而这个level就是系统默认的二值化阈值,他的值是由系统自带的函数level = graythresh(A1); 处理而得来的,你要是想看看graythresh函数那么你直接type graythresh或者open graythresh打开函数就可以看个详细了,你这个图简单,当然好处理,要是遇见复杂的就得自己编了
B. 对图像阈值分割后进行了二值化处理。那其中的255和1 是什么关系
一般灰度图像的灰度级为1~256或者0~255,你可以自己选择,255和1就是这个图像的最大和最小的灰度级。
C. 一幅图像通过阈值分割算法得到最佳阈值,怎么通过阈值得到分割后的两幅图像比如说:分割舌苔舌质
根据灰度、梯度、形态等来设定自适应阈值。
设定过程:设置→参数→选择(灰度、梯度、形态)→输入数值→计算阈值→搞定。
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
阈值又称阈强度,是指释放一个行为反应所需要的最小刺激强度。低于阈值的刺激不能导致行为释放。在反射活动中,阈值的大小是固定不变的,在复杂行为中,阈值则受各种环境条件和动物生理状况的影响。当一种行为更难于释放时,就是阈值提高了;当一种行为更容易释放时,就是阈值下降了。一般说来,刚刚完成某一行为后,动物对这一行为的要求就会大大下降。例如刚交过尾的动物,对于性刺激或是没有反应或是反应很弱,这就意味着释放性行为的阈值增加了。类似情况在觅食行为和其他行为中也很常见。另一方面,长时间未发生的行为非常容易被释放,释放这种行为的刺激强度会变得非常小。在极端情况下,阈值的降低可以导致行为的自发产生,这就是空放行为(vacuum behavior)。空放行为是一种无刺激行为释放,是达不到该种行为目的的一种行为。最令人信服的实例是织巢鸟的筑巢行为。饲养在鸟笼中的织巢鸟,在得不到任何筑巢材料和代用物的情况下,也完全可以表现出筑巢动作,虽然这种动作达不到它本来的目的。
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
D. 想要做灰度图像的阈值分割,求出阈值后,为什么不能显示处理后的图像谢谢
用自己的灰度图片试了你的程序,没发现有错误。。。你一步一步检查一下 看看I图像对不 是什么格式的double还是uint8还是什么的 然后检查level阈值 是不是在0-1之间
E. 我利用matlab完成了彩色图像的阈值分割,但是分割后的图片是二值的,我要求分割后是彩色图像,接下来如何处理
[m,n]=size(im);%原图像的大小
for i=1:m;
for j=1:n;
if binarymap(i,j) ==1%binarymap是你的二值图像
im(i,j,1)=255;
i m(i,j,2)=255;
im(i,j,3)=255;
end
end
end
figure
imshow(im);
F. 图像分割matlab程序,运行后,分割结果为全黑,阈值th显示128,这是什么情况请求解答
代码写错了
%% 迭代阈值选择法二值化图像与Otsu阈值选择法二值化图像比较
clc;
clear all;
close all;
f=imread('8_256_lena.bmp','bmp');
subplot(2,2,1);
subimage(f);title('原始图像');
f=double(f);
T=(min(f(:))+max(f(:)))/2;
done=false;
i=0;
while ~done
r1=find(f<=T);
r2=find(f>T);
Tnew=(mean(f(r1))+mean(f(r2)))/2;
done=abs(Tnew-T)<1;
T=Tnew;
i=i+1;
end
f(r1)=0;
f(r2)=1;
subplot(2,2,2);
subimage(f);title('迭代阈值二值化图像图像');
f=imread('8_256_lena.bmp','bmp');
subplot(2,2,3);
subimage(f);title('原始图像');
T=graythresh(f);
g=im2bw(f,T);
subplot(2,2,4);
subimage(g);title('Otsu方法二值化图像');
G. 如何用opencv实现图像阈值化分割
颜色直方图是在许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。
OpenCV对颜色直方图进行统计的代码如下所示,在图像检索,镜头分割等领域使用的还是比较多的。
#include <cv.h> #include <highgui.h> #include <iostream> using namespace std; int main( int argc, char** argv ) { IplImage * src= cvLoadImage("F:\\test3.jpg"); IplImage* hsv = cvCreateImage( cvGetSize(src), 8, 3 ); IplImage* h_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* s_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* v_plane = cvCreateImage( cvGetSize(src), 8, 1 ); IplImage* planes[] = { h_plane, s_plane }; /** H 分量划分为16个等级,S分量划分为8个等级 */ int h_bins = 16, s_bins = 8; int hist_size[] = {h_bins, s_bins}; /** H 分量的变化范围 */ float h_ranges[] = { 0, 180 }; /** S 分量的变化范围*/ float s_ranges[] = { 0, 255 }; float* ranges[] = { h_ranges, s_ranges }; /** 输入图像转换到HSV颜色空间 */ cvCvtColor( src, hsv, CV_BGR2HSV ); cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); /** 创建直方图,二维, 每个维度上均分 */ CvHistogram * hist = cvCreateHist( 2, hist_size, CV_HIST_ARRAY, ranges, 1 ); /** 根据H,S两个平面数据统计直方图 */ cvCalcHist( planes, hist, 0, 0 ); /** 获取直方图统计的最大值,用于动态显示直方图 */ float max_value; cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); /** 设置直方图显示图像 */ int height = 240; int width = (h_bins*s_bins*6); IplImage* hist_img = cvCreateImage( cvSize(width,height), 8, 3 ); cvZero( hist_img ); /** 用来进行HSV到RGB颜色转换的临时单位图像 */ IplImage * hsv_color = cvCreateImage(cvSize(1,1),8,3); IplImage * rgb_color = cvCreateImage(cvSize(1,1),8,3); int bin_w = width / (h_bins * s_bins); for(int h = 0; h < h_bins; h++) { for(int s = 0; s < s_bins; s++) { int i = h*s_bins + s; /** 获得直方图中的统计次数,计算显示在图像中的高度 */ float bin_val = cvQueryHistValue_2D( hist, h, s ); int intensity = cvRound(bin_val*height/max_value); /** 获得当前直方图代表的颜色,转换成RGB用于绘制 */ cvSet2D(hsv_color,0,0,cvScalar(h*180.f / h_bins,s*255.f/s_bins,255,0)); cvCvtColor(hsv_color,rgb_color,CV_HSV2BGR); CvScalar color = cvGet2D(rgb_color,0,0); cvRectangle( hist_img, cvPoint(i*bin_w,height), cvPoint((i+1)*bin_w,height - intensity), color, -1, 8, 0 ); } } cvNamedWindow( "Source", 1 ); cvShowImage( "Source", src ); cvNamedWindow( "H-S Histogram", 1 ); cvShowImage( "H-S Histogram", hist_img ); cvWaitKey(0); }
H. matlab彩色图像的阈值分割
阈值分割就是针对灰度图像的,通过设定一个阈值可以在分割后达到二值化的效果。对彩色图像进行阈值分割,当然也是转成灰度图后进行分割了。
假如你对各个颜色分量分别进行阈值化,我给你试了试
a=imread('a.jpg');
[m,n,d]=size(a);
threshold=90;
fori=1:m
forj=1:n
fork=1:3
ifa(i,j,k)>90
a(i,j,k)=255;
elsea(i,j,k)=0;
end
end
end
end
a_origin=a;
a(:,:,2)=0;
a(:,:,3)=0;
subplot(121),imshow(a);
subplot(122),imshow(a_origin);
效果就是,单个颜色分量的可以阈值分割,但是一起分割就效果不理想了
I. 如何对图像进行阈值处理
程序这样写,1、读入图片存为文件a;2、将a文件灰度化存为b;3、给定一个灰度阈值,然后将b的每个点与它比较,大于它则变成白,小于则为黑,结果存为c;4、输出c
J. MATLAB采用基本的全局阈值化的方法,实现对图像的阈值分割。,不用工具箱,,急!!!!
一种能基于图像数据自动地选择阈值的算法:
(1)选择全局阈值的初始估计值T和参数△T。参数△T用于控制迭代次数.
(2) 用T分割图像。这会产生两组像素:G1由所有灰度值大于T的像素组成,G2由所有灰度值小于等于T的像素组成。
(3) 分别计算G1、G2区域内的平均灰度值m1和m2。
(4) 计算出新的阈值: T=(m1+m2)/2
(5) 重复步骤(2)~(4),直到在连续的重复中,T的差异比预先设定的参数△T小为止。
(6) 使用函数im2bw分割图像:
g = im2bw(f, T/den)
den是整数(8比特图像为255)