Digital Image Processing Using Scilab Pdf -
// Low-pass filter in frequency domain [m, n] = size(gray_img); cx = m/2; cy = n/2; radius = 30; H = zeros(m, n); for i = 1:m for j = 1:n if sqrt((i-cx)^2 + (j-cy)^2) <= radius H(i, j) = 1; end end end
// 6. Threshold processed = edges > 50; imshow(processed); end
median_filtered = medfilt2(gray_img, [3 3]); // Create Gaussian kernel (approx) gaussian_kernel = [1 2 1; 2 4 2; 1 2 1] / 16; gaussian_filtered = imfilter(gray_img, gaussian_kernel); 6. Edge Detection 6.1 Sobel Operator // Sobel kernels sobel_x = [-1 0 1; -2 0 2; -1 0 1]; sobel_y = [-1 -2 -1; 0 0 0; 1 2 1]; Gx = imfilter(double(gray_img), sobel_x); Gy = imfilter(double(gray_img), sobel_y);
// Opening (erosion followed by dilation) opened = imopen(binary, se); digital image processing using scilab pdf
// Write image to disk imwrite(img, 'output.png');
Article ID: DIP-SCILAB-01 Target Audience: Engineering students, researchers, hobbyists Software Required: Scilab 6.1+ with SIVP (Scilab Image and Video Processing) toolbox 1. Introduction Digital Image Processing (DIP) involves manipulating digital images using computer algorithms. While MATLAB is the industry standard, Scilab —a free, open-source alternative—provides powerful capabilities for DIP through its SIVP (Scilab Image and Video Processing) toolbox and core functions.
// Dilation dilated = imdilate(binary, se); // Low-pass filter in frequency domain [m, n]
// 4. Enhance contrast img = histeq(img);
// Apply filter F_filtered = F_shifted .* H; F_restored = ifftshift(F_filtered); filtered_img = abs(ifft2(F_restored)); imshow(uint8(filtered_img)); // Full image processing pipeline function processed = process_image(path) // 1. Read img = imread(path); // 2. Convert to grayscale if size(img, 3) == 3 img = rgb2gray(img); end
// Gradient magnitude edge_magnitude = sqrt(Gx.^2 + Gy.^2); imshow(uint8(edge_magnitude)); // Prewitt prewitt_x = [-1 0 1; -1 0 1; -1 0 1]; // Laplacian (second derivative) laplacian = [0 -1 0; -1 4 -1; 0 -1 0]; edges_laplacian = imfilter(gray_img, laplacian); 7. Morphological Operations Requires binary images. Enhance contrast img = histeq(img); // Apply filter
// Erosion eroded = imerode(binary, se);
// Threshold to create binary image binary = gray_img > 128; // Structuring element (disk of radius 3) se = [0 1 0; 1 1 1; 0 1 0];
// Install SIVP from ATOMS (Scilab’s package manager) atomsInstall("SIVP") // Restart Scilab after installation // Load the toolbox exec("SCI/modules/sivp/macros/sivp_loader.sce", -1) Alternatively, use core functions ( imread , imshow , imwrite ) available in recent Scilab versions. 3.1 Read, Display, and Write Images // Read an image img = imread('camera.jpg'); // Display image imshow(img);
Would you like a ready-to-download PDF version of this article? Copy this content into any word processor and export as PDF, or use a browser’s print-to-PDF feature.
// Closing (dilation followed by erosion) closed = imclose(binary, se); 8.1 Simple Thresholding // Global threshold threshold = 120; segmented = gray_img > threshold; imshow(segmented); 8.2 Otsu’s Thresholding // Compute Otsu threshold automatically [level, intensity] = otsu_thresh(gray_img); bw_otsu = gray_img > level; 8.3 Connected Components Labeling [labeled_img, num_objects] = bwlabel(bw_otsu); disp("Number of objects detected: " + string(num_objects)); 9. Fourier Transform for Frequency Domain Processing // Compute FFT F = fft2(double(gray_img)); F_shifted = fftshift(F); // Magnitude spectrum magnitude = log(abs(F_shifted) + 1); imshow(magnitude, []);