图像gamma修正
一、实验目的:
熟练章握Gamma修正算法原理,步骤和结果
二、实验数据:microorg.jpg
三、实验要求:
编写matlab程序,实现对实验數据 的亮度分量的Gamma修正,Gamma值分别取0.25、0.5、1、2, 3
四、实验方法和结果
步骤1:将像素值归一化,得到a∈[0,1];
歩骤2:计算伽马函数:b = dy;
歩骤3:将经过伽马修正的像素值做灰度变换,得到b∈[0,amax],用公式表示为
程序如下:
首先建立gamma修正图像绘制函数
function gammam(image, gamma)
image=im2double(image);
image=rgb2gray(image);
s = image .^ gamma; %对图像进行gamma修正
imshow(s), title(sprintf('Gamma: %0.2f',gamma));
end
然后进行函数调用即可
image=imread('图像素材2.jpg');
subplot(3,2,[1,2] );
imshow(image);
subplot(323);
gammam(image, 0.25);
subplot(324);
gammam(image, 0.5);
subplot(325);
gammam(image, 2);
subplot(326);
gammam(image, 3);
获得结果如下
图像边缘检测
对计算机合成图像Simulation作边缘检测,试对 检测结果定量评估。生成包括圆,正方形,矩形等不同灰度的图形
应用Sobel算子(双方向模板)等算法对合成图像进行|边缘检测,应用不同阈值取得不同边缘。
由于是计算机合成图像,可以精确知道单像素宽边缘位置(掩膜)。将合成图像边缘作为参考图像,与检|测边缘做定量比较
边缘提取的性能很难定量评估,有两个测度可供参考:
边缘检测错误率
其中,N1是漏检的边缘点数及误增加边缘点数之和,No是真正(参考)边缘点数。
程序与结果
clear;
close all;
w=512;r=200;
[rr,cc] = meshgrid(1:w);
edge_1=ceil(sqrt((rr-floor(w/2)).^2 + (cc-floor(w/2)).^2)) == r;%边界
circle_1 = sqrt((rr-floor(w/2)).^2 + (cc-floor(w/2)).^2) <= r; %圆形
subplot(231)
imshow(edge_1);title('边界');
subplot(232)
imshow(circle_1);title('图像');
sobel_edge=edge(circle_1,'sobel');%sobel边界
prewitt_edge=edge(circle_1,'prewitt');%prewitt边界
subplot(233)
imshow(sobel_edge);title('sobel检测边界');
subplot(234)
imshow(prewitt_edge);title('prewitt检测边界');
N_sobel=sum(sum(xor(sobel_edge,edge_1) ));%sobel相差点数
N_prewitt=sum(sum(xor(prewitt_edge,edge_1) ));%prewitt相差点数
N_edge= sum(sum(edge_1)); %标准边界点数
P_sobel=N_sobel/N_edge; %sobel算子P
P_prewitt=N_prewitt/N_edge;%prwitt算子P
subplot(235)
imshow(xor(sobel_edge,edge_1));title(sprintf('sobel xor P=%0.4f',P_sobel))
subplot(236)
imshow(xor(prewitt_edge,edge_1));title(sprintf('prewitt xor P=%0.4f',P_prewitt))
程序运行结果如下