旋光效应可视检测液体的浓度(附MATLAB代码)

目的

根据CCD相机采集到的旋光楔形图像,标定当前基于旋光可视检测的液体浓度光电检测系统实验系统参数;
然后由测得的比旋光度测定未知浓度葡萄糖溶液的浓度。

原理

一、旋光效应
当一束单一的平面偏振光通过某些晶体或物质的溶液时,其振动方向发生改变,此时光的振动面将以光的传播方向为轴线会旋转一定的角度,这种现象称为旋光现象,旋转的角度称为旋光度。物质的这种使偏振光的振动面旋转的性质叫做旋光性,具有旋光性的物质叫做旋光性物质或旋光物质。

二、角向偏振片显示原理
角向偏振显示器又称角向偏振片,其截面图如图1(a)所示。角向偏振片可以看作是一个线栅偏振,即由多个线型偏振器件构成的具有圆形同心传播轴的偏振器件。角向偏振片的每一个小区域都是一个线型偏振器,其传输轴的方向垂直于径向。当线偏振光通过角向偏振显示器之后,观察成像结果发现,在线偏振光的偏振方向上会出现两个相对的楔形暗区如图1(b),对该图像进行处理,可以获得线偏振光的振动方向。

(a)
(b)
图1 (a)角向偏振显示器截面; (b)线偏振光经过角片器成像仿真图
 

三、系统原理
物质的旋光度实验光路如图4.2所示,由单色光源(钠光灯或激光器)发出的光,通过起偏镜(尼可尔棱镜)后,转变为平面偏振光(简称偏振光)。当偏振光通过样品管中的旋光物质时,由于旋光性,其振动平面会旋转一定角度,此时的偏振光在入射到角向偏振片后,成像到CCD相机上。拍摄到的图像的楔形暗区方向即为经过旋光物质作用后光束的偏振方向,与未经过旋光物质作用的光束的偏振方向的夹角即为样品的实测旋光度 θ \theta θ
在这里插入图片描述

图2 实验光路

旋光度的大小除了取决于被测分子的立体结构外,还受到待测溶液的浓度、偏振光通过溶液的厚度(即样品管的长度)以及温度、所用光源的波长、所用溶剂等因素的影响,这些因素在测定结果中都要表示出来。常用比旋光度来表示物质的旋光性,比旋光度和旋光度的关系如下:
θ = α ⋅ c ⋅ L \theta=\alpha\cdot c \cdot L θ=αcL

上式中, θ \theta θ为所测得的旋光度;c为液层厚度为L (cm)的液体的浓度(g/ml); α \alpha α为旋光物质的比旋光度,即单位浓度和单位长度下的旋光度,是旋光性物质的物理常数。通过测定旋光度,可以鉴定物质的纯度、测定溶液的浓度、密度和鉴别光学异构体。
实验系统中,在确定容器和旋光物质的情况下, α \alpha α与L 均为常数,上式可写为:
θ = K ⋅ c \theta=K\cdot c θ=Kc
其中K是当前实验系统待标定参数。

MATLAB处理程序

算法流程图如下:
在这里插入图片描述
在这里插入图片描述

未处理旋光图像

在这里插入图片描述

二值化图像
 

程序输出角度为3.0248°,根据公式θ=K⋅c及标定得到的K值计算得未知溶液浓度:
在这里插入图片描述

close all;
clear all;
[filename1, pathname1] = uigetfile({'*.tif';'*.jpg'; '*.bmp'});
if filename1==0, return, end 
oldpath=cd;  
cd(pathname1);
[filename2, pathname2] = uigetfile({'*.tif';'*.jpg'; '*.bmp'});
cd(oldpath);
if filename2==0, return, end 
FILENAME1 = [pathname1 filename1];
FILENAME2 = [pathname2 filename2];
SorImg1=imread(FILENAME1);
SorImg2=imread(FILENAME2);
subplot(1,2,1),imshow(SorImg1);
subplot(1,2,2),imshow(SorImg2);
threshold1=0.35;
threshold2=0.35 ;
figure(1);   %楔形暗区图像
subplot(1,2,1),[Orientation1,Centroid1]=RotAngFun(SorImg1,filename1,threshold1,threshold2);
subplot(1,2,2),[Orientation2,Centroid2]=RotAngFun(SorImg2,filename2,threshold1,threshold2);
Delta=Orientation1-Orientation2;  %单位是度
display(['the angle is ' num2str(Delta)]);
figure(2);  %外接椭圆长轴与x轴
subplot(1,2,1),hold on,PlotFun(Orientation1,Centroid1,size(SorImg1));
subplot(1,2,2),hold on,PlotFun(Orientation2,Centroid2,size(SorImg2));


function [Orientation,Centroid]=RotAngFun(SorImg,filename,threshold1,threshold2)
flag=strfind(filename,'-');
% GrayImg=rgb2gray(SorImg);
GrayImg = SorImg;
if(isempty(flag))
    BwImg=im2bw(GrayImg,threshold1);
else
    BwImg=im2bw(GrayImg,threshold2);
end
BwImg=bwareaopen(BwImg,1000);
BwImg=~bwareaopen(~BwImg,1000);
se=strel('disk',5);
BwImg=imopen(BwImg,se);
BwImg=imfill(BwImg,'holes');
imshow(BwImg);
S=regionprops(BwImg,'Orientation','Centroid');
Orientation=S.Orientation;
Centroid=S.Centroid;
end

function  PlotFun(Orientation,Centroid,ImgSize)
k=tan(deg2rad(Orientation));
b=-Centroid(2)-k*Centroid(1);
x=1:ImgSize(2);
y=k*x+b;
plot(x,-y,'r');hold on;
y1=Centroid(2)*ones(1,ImgSize(2));
plot(x,y1,'b');
title(num2str(Orientation));
end
  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值