Skip to content

Latest commit

 

History

History
405 lines (405 loc) · 17.7 KB

y4w30t.md

File metadata and controls

405 lines (405 loc) · 17.7 KB

Write a python to calculate Radial Distribution Function

Here's a basic implementation of Radial Distribution Function (RDF) in Python:

scss

import numpy as np
import matplotlib.pyplot as plt

def radial_distribution_function(particles, box_length, r_max, bin_count):
    histogram = np.zeros(bin_count)
    r_step = r_max / bin_count

    for i in range(len(particles)):
        for j in range(i + 1, len(particles)):
            delta = particles[i] - particles[j]
            delta = delta - np.round(delta / box_length) * box_length
            distance = np.linalg.norm(delta)
            bin_index = int(distance / r_step)

            if bin_index < bin_count:
                histogram[bin_index] += 2

    histogram /= (4 / 3 * np.pi * (r_step * np.arange(bin_count)) ** 3 * len(particles))

    return histogram

# Example usage:
particles = np.random.rand(100, 3) * 100
histogram = radial_distribution_function(particles, 100, 10, 100)
plt.plot(histogram)
plt.show()

This code calculates the RDF for a set of particles, with positions given as an N x 3 numpy array. The simulation box has length box_length and the RDF is calculated up to a maximum distance of r_max, using bin_count bins. The result is a histogram that represents the RDF. In this example, the RDF is plotted using matplotlib.

Write a python code to find the Pair correlation of a 2D image

Here's a basic implementation of the pair correlation function (PCF) for a 2D image in Python:

scss

import numpy as np
import matplotlib.pyplot as plt

def pair_correlation(image, r_max, bin_count):
    histogram = np.zeros(bin_count)
    r_step = r_max / bin_count
    height, width = image.shape

    for i in range(height):
        for j in range(width):
            if image[i, j] == 1:
                for i_prime in range(height):
                    for j_prime in range(width):
                        if image[i_prime, j_prime] == 1:
                            delta = np.array([i - i_prime, j - j_prime])
                            distance = np.linalg.norm(delta)
                            bin_index = int(distance / r_step)

                            if bin_index < bin_count:
                                histogram[bin_index] += 1

    histogram /= (np.pi * (r_step * np.arange(bin_count)) ** 2 * np.count_nonzero(image))

    return histogram

# Example usage:
image = np.random.randint(0, 2, (100, 100))
histogram = pair_correlation(image, 10, 100)
plt.plot(histogram)
plt.show()

This code calculates the PCF for a binary image (where pixels with value 1 are considered to be part of the sample and pixels with value 0 are considered to be background). The PCF is calculated up to a maximum distance of r_max, using bin_count bins. The result is a histogram that represents the PCF. In this example, the PCF is plotted using matplotlib.

Write a python code to fit the Lorentzian curve fit

Here's a basic implementation of fitting a Lorentzian curve in Python using the scipy library:

python

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def lorentzian(x, amplitude, x0, gamma):
    return amplitude * gamma ** 2 / ((x - x0) ** 2 + gamma ** 2)

def fit_lorentzian(x, y):
    popt, pcov = curve_fit(lorentzian, x, y)
    return popt

# Example usage:
x = np.linspace(-10, 10, 100)
y = lorentzian(x, 1, 0, 2) + 0.2 * np.random.randn(100)
popt = fit_lorentzian(x, y)

plt.plot(x, y, 'bo', label='Data with noise')
plt.plot(x, lorentzian(x, *popt), 'r', label='Fitted Lorentzian')
plt.legend()
plt.show()

This code uses the curve_fit function from the scipy library to fit a Lorentzian curve to a set of x and y data points. The Lorentzian curve is defined by the function lorentzian, which takes as input x, amplitude, x0, and gamma and returns the value of the Lorentzian curve at each x value. The fit_lorentzian function uses curve_fit to fit the Lorentzian curve to the data and returns the optimized parameters amplitude, x0, and gamma. In this example, a noisy Lorentzian curve is generated and then fitted, and the fitted curve is plotted along with the original data.

Write a Python code for Gaussian curve fit

Here's a basic implementation of fitting a Gaussian curve in Python using the scipy library:

python

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def gaussian(x, amplitude, mean, standard_deviation):
    return amplitude * np.exp(-(x - mean) ** 2 / (2 * standard_deviation ** 2))

def fit_gaussian(x, y):
    popt, pcov = curve_fit(gaussian, x, y)
    return popt

# Example usage:
x = np.linspace(-10, 10, 100)
y = gaussian(x, 1, 0, 2) + 0.2 * np.random.randn(100)
popt = fit_gaussian(x, y)

plt.plot(x, y, 'bo', label='Data with noise')
plt.plot(x, gaussian(x, *popt), 'r', label='Fitted Gaussian')
plt.legend()
plt.show()

This code uses the curve_fit function from the scipy library to fit a Gaussian curve to a set of x and y data points. The Gaussian curve is defined by the function gaussian, which takes as input x, amplitude, mean, and standard_deviation and returns the value of the Gaussian curve at each x value. The fit_gaussian function uses curve_fit to fit the Gaussian curve to the data and returns the optimized parameters amplitude, mean, and standard_deviation. In this example, a noisy Gaussian curve is generated and then fitted, and the fitted curve is plotted along with the original data.

Write a python code to track a single particle in a 2Dimage Frames

Here's a basic implementation of tracking a single particle in a series of 2D images using Python:

python

import numpy as np
import cv2

def track_particle(frames, particle_location, window_size=50):
    x, y = particle_location
    particle_locations = []

Here's a basic implementation of tracking a single particle in a series of 2D images using Python:

python

import numpy as np
import cv2

def track_particle(frames, particle_location, window_size=50):
    x, y = particle_location
    particle_locations = []
    for frame in frames:
        sub_frame = frame[y - window_size // 2 : y + window_size // 2, x - window_size // 2 : x + window_size // 2]
        x, y = np.unravel_index(sub_frame.argmax(), sub_frame.shape)
        x += x - window_size // 2
        y += y - window_size // 2
        particle_locations.append((x, y))
    return particle_locations

# Example usage:
cap = cv2.VideoCapture("example.avi")

# Get the first frame and initialize the particle location
ret, frame = cap.read()
particle_location = (100, 100)

# Read all the frames
frames = []
while ret:
    frames.append(frame)
    ret, frame = cap.read()

particle_locations = track_particle(frames, particle_location)

This code uses the OpenCV library to track a single particle in a series of 2D images (frames). The track_particle function takes as input a list of frames and the initial location of the particle in the first frame. The function uses a sliding window approach to track the particle. In each iteration, it extracts a small window around the estimated location of the particle in the previous frame, and finds the maximum intensity within the window to determine the particle's location in the current frame. The function returns a list of particle locations in all the frames.

In this example, the input frames are read from an AVI video file using the cv2.VideoCapture function from the OpenCV library. The initial location of the particle is set to (100, 100). The function track_particle is then called with the frames and the initial particle location to get the particle locations in all the frames.

Write a python code to track a Triangle shape particle in a series of 2D Frames

Here's a basic implementation of tracking a triangle-shaped particle in a series of 2D images using Python:

php

import numpy as np
import cv2

def track_triangle(frames, triangle_vertices, window_size=50):
    triangle_vertices_list = [triangle_vertices]
    for frame in frames:
        next_vertices = []
        for vertex in triangle_vertices:
            x, y = vertex
            sub_frame = frame[y - window_size // 2 : y + window_size // 2, x - window_size // 2 : x + window_size // 2]
            x, y = np.unravel_index(sub_frame.argmax(), sub_frame.shape)
            x += x - window_size // 2
            y += y - window_size // 2
            next_vertices.append((x, y))
        triangle_vertices = np.array(next_vertices)
        triangle_vertices_list.append(triangle_vertices)
    return triangle_vertices_list

# Example usage:
cap = cv2.VideoCapture("example.avi")

# Get the first frame and initialize the triangle vertices
ret, frame = cap.read()
triangle_vertices = np.array([[100, 100], [120, 120], [80, 120]])

# Read all the frames
frames = []
while ret:
    frames.append(frame)
    ret, frame = cap.read()

triangle_vertices_list = track_triangle(frames, triangle_vertices)

This code uses the OpenCV library to track a triangle-shaped particle in a series of 2D images (frames). The track_triangle function takes as input a list of frames and the initial vertices of the triangle in the first frame. The function uses a sliding window approach to track each vertex of the triangle. In each iteration, it extracts a small window around the estimated location of the vertex in the previous frame, and finds the maximum intensity within the window to determine the vertex's location in the current frame. The function returns a list of triangle vertices in all the frames.

In this example, the input frames are read from an AVI video file using the cv2.VideoCapture function from the OpenCV library. The initial vertices of the triangle are set to [[100, 100], [120, 120], [80, 120]]. The function track_triangle is then called with the frames and the initial triangle vertices to get the triangle vertices in all the frames.

Write a python code to find the 3 corner of a triangle in a 2D image

Here's a basic implementation in Python to find the three corners of a triangle in a 2D image:

python

import cv2
import numpy as np

def find_triangle_corners(image):
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    canny = cv2.Canny(gray, 50, 150)
    contours, _ = cv2.findContours(canny, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    triangle_contours = []
    for contour in contours:
        if len(contour) == 3:
            triangle_contours.append(contour)
    if len(triangle_contours) == 0:
        return None
    triangle_contour = triangle_contours[0]
    triangle_corners = []
    for vertex in triangle_contour:
        x, y = vertex[0]
        triangle_corners.append((x, y))
    return triangle_corners

# Example usage:
img = cv2.imread("example.jpg")
triangle_corners = find_triangle_corners(img)
if triangle_corners is not None:
    print("Triangle corners:", triangle_corners)
else:
    print("No triangle found in the image.")

This code uses the OpenCV library to find the three corners of a triangle in a 2D image. The find_triangle_corners function takes as input an image and returns the corners of the triangle in the image if it is found.

The implementation first converts the input image to grayscale and applies the Canny edge detection algorithm to get the edges in the image. Then, it uses the cv2.findContours function to find all the contours in the edge map. The function filters out the contours with the length of 3, which are most likely the contours of a triangle. If there are multiple contours with the length of 3, the function returns the first one. Finally, the function returns the vertices of the triangle as a list of (x, y) pairs, representing the three corners of the triangle.

In this example, the input image is read from a JPEG image file using the cv2.imread function from the OpenCV library. The function find_triangle_corners is then called with the input image to get the triangle corners if it is found.

write python code to find the FFT of a 2D image

Here's an implementation in Python to find the 2D Fast Fourier Transform (FFT) of an image:

scss

import numpy as np
import cv2
import matplotlib.pyplot as plt

def fft_2d(img):
    f = np.fft.fft2(img)
    fshift = np.fft.fftshift(f)
    magnitude_spectrum = 20 * np.log(np.abs(fshift))
    return magnitude_spectrum

# Example usage:
img = cv2.imread("example.jpg", 0) # Load grayscale image
magnitude_spectrum = fft_2d(img)
plt.imshow(magnitude_spectrum, cmap = 'gray')
plt.title("Magnitude Spectrum"), plt.xticks([]), plt.yticks([])
plt.show()

The function fft_2d takes an input image and returns the magnitude spectrum of the image, which is the result of the 2D FFT. The implementation uses the np.fft.fft2 function from the NumPy library to perform the 2D FFT. The function np.fft.fftshift is used to center the FFT result, and the magnitude of the FFT is calculated using np.abs and the logarithm with base 20 is taken using np.log.

In this example, the input image is loaded using the cv2.imread function from the OpenCV library. The function fft_2d is then called with the input image to get the magnitude spectrum of the image. The magnitude spectrum is displayed using the matplotlib.pyplot library.

Write a python code to find the FFT of an a array numbers

Here's an implementation in Python to find the Fast Fourier Transform (FFT) of a sequence of numbers:

python

import numpy as np
import matplotlib.pyplot as plt

def fft(x):
    f = np.fft.fft(x)
    magnitude_spectrum = np.abs(f)
    return magnitude_spectrum

# Example usage:
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
magnitude_spectrum = fft(x)
plt.plot(magnitude_spectrum)
plt.title("Magnitude Spectrum")
plt.show()

The function fft takes an input sequence of numbers and returns the magnitude spectrum of the sequence, which is the result of the FFT. The implementation uses the np.fft.fft function from the NumPy library to perform the FFT. The magnitude of the FFT is calculated using np.abs.

In this example, an input sequence x is created as a NumPy array. The function fft is then called with the input sequence to get the magnitude spectrum of the sequence. The magnitude spectrum is displayed using the matplotlib.pyplot library.

Write a python code to measure the speed of a moving car

2 / 2

Here's a basic implementation in Python to measure the speed of a moving car using computer vision:

python

import cv2
import numpy as np

def measure_speed(video_path, frame_interval, object_width_real, object_width_pixels):
    # Load video from file
    cap = cv2.VideoCapture(video_path)
    frame_width = int(cap.get(3))
    frame_height = int(cap.get(4))
    fps = cap.get(cv2.CAP_PROP_FPS)

    # Define conversion factor from pixels to real units
    conversion_factor = object_width_real / object_width_pixels

    # Initialize previous frame
    prev_frame = None

    # Calculate distance traveled by the car in each frame
    distances = []
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        if prev_frame is None:
            prev_frame = frame
            continue

        # Measure distance traveled by car in current frame
        difference = cv2.absdiff(prev_frame, frame)
        gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
        thresh = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY)[1]
        contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        for contour in contours:
            x, y, w, h = cv2.boundingRect(contour)
            distance = w * conversion_factor
            distances.append(distance)
        prev_frame = frame

    cap.release()

    # Calculate speed by dividing the distance traveled by the time interval
    speeds = [d / (frame_interval / fps) for d in distances]

    return speeds

# Example usage:
video_path = "example.avi"
frame_interval = 1 # Time interval between frames in seconds
object_width_real = 2.5 # Real width of the car in meters
object_width_pixels = 150 # Width of the car in pixels in the video
speeds = measure_speed(video_path, frame_interval, object_width_real, object_width_pixels)
print("Speeds:", speeds)

The measure_speed function takes as input the path to a video of a moving car, the time interval between frames in seconds, the real width of the car in meters, and the width of the car in pixels in the video. The function calculates the speed of the car by measuring the distance traveled by the car in each frame, and dividing it by the time interval between frames.

The implementation uses the OpenCV library to load the video from a file, calculate the difference between consecutive frames, detect the contours of the car in each frame, and measure the width of the car in pixels. The width of the car in pixels is then converted to a distance in real units using the conversion factor. The speed of the car is finally calculated by dividing the distance traveled by the time interval between frames.

In this example, the measure_speed function is called with the example video