Effacer les filtres
Effacer les filtres

how to find color pattern?

2 vues (au cours des 30 derniers jours)
ajeet verma
ajeet verma le 14 Août 2017
i am coding trapezoidal fringe pattern and i need color pattern but something being wrong, please help my code is here:
%%trapezoidal color fringes (vertical)
clc;
clear all;
f1=10; % No. of vertical fringes
f2=0; % No. of horizontal fringes
m=1000;
n=1000;
a1 = zeros(m,n) ;
a2 = zeros(m,n) ;
a3 = zeros(m,n) ;
% trapezoidal fringe
imx=8;
imn=2;
T = 20;
s1= @(x) (imx+imn).*((0<=x & x<=T/6)|(x>=5*T/6 & x<=T))...
+(imx+imn*(2-6*x/T)).*(T/6<=x & x<=T/3)...
+(imx).*(T/3<=x & x<=2*T/3)...
+(imx+imn*(6*x/T-4)).*(2*T/3<=x & x<=5*T/6);
s2= @(x) (imx+imn*(6*x/T)).*(0<=x & x<=T/6)...
+(imx+imn).*(T/6<=x & x<=T/2)...
+(imx+imn*(4-6*x/T)).*(T/2<=x & x<=2*T/3)...
+(imx).*(2*T/3<=x & x<=T);
s3= @(x) (imx).*(0<=x & x<=T/3)...
+(imx+imn*(6*x/T-2)).*(T/3<=x & x<=T/2)...
+(imx+imn).*(T/2<=x & x<=5*T/6)...
+(imx+imn*(6-6*x/T)).*(5*T/6<=x & x<=T);
x = linspace(0,20,50);
X = repmat(x, 1000, 20);
I1 = s1(X);
I2 = s2(X);
I3 = s3(X);
% figure(1)
% subplot(131),imshow(I1,[])
% subplot(132),imshow(I2,[])
% subplot(133),imshow(I3,[])
a1=exp(1i*I1);
a2=exp(1i*I2);
a3=exp(1i*I3);
subplot(131),imshow(a1,[]),impixelinfo;
subplot(132),imshow(a2,[]),impixelinfo;
subplot(133),imshow(a3,[]),impixelinfo;
Color=zeros(m,n,3);
Color(:,:,1)=a1;
Color(:,:,2)=a2;
Color(:,:,3)=a3;
figure(2)
imshow(Color),title('vertical fringes'),impixelinfo;
  1 commentaire
Stephen23
Stephen23 le 14 Août 2017
@ajeet verma: today I formatted your code correctly for you. In future you can do it yourself: select the code text, then click the {} Code button.

Connectez-vous pour commenter.

Réponse acceptée

Image Analyst
Image Analyst le 14 Août 2017
Your values are negative so they show up as black because imshow() expects floating point color images to be the in the range 0-1 and anything below 0 is black and anything above 1 is white. Here's a workaround to scale your data using mat2gray():
realColor = mat2gray(real(Color));
imagColor = mat2gray(imag(Color));
figure(2)
imshow(realColor);
figure(3)
imshow(imagColor);
title('vertical fringes'),impixelinfo;

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by