顯示具有 1102hw1 標籤的文章。 顯示所有文章
顯示具有 1102hw1 標籤的文章。 顯示所有文章

2022年2月23日 星期三

s1082040 作業1

 一、作業要求

        撰寫一個程式讀取ㄧ張圖片,將圖像中每一個點像素的值各加上一個數值。如果輸入 圖像是灰階圖像,改變每個像素的灰階值;如果輸入圖像是全彩圖像(RGB),則只改變 每個像素的 R 值。 注意修改後像素值溢位 Overflow 問題(像素值介於 0 與 255 之間)。

 二、程式說明

        1.原圖.convertTo(新圖, CV_32F) 需先轉成高精度再進行亮度轉換

        2.用for迴圈以圖片col和row當作範圍一個一個轉換

        3. 偵測灰階圖片:當r==g==b時判斷為灰階圖片

        4.若為全彩圖片則只調整r值

 三、程式環境

Windows 10

Visual Studio 2019

OpenCV 3.4.6

 四、執行畫面

                                                   Lenna(+100)                    Lenna(-100)


                                                  bookgrey(+100)              bookgrey(-100)


2022年2月22日 星期二

s1081533 作業1

 1. 開發環境

  • mac 11.4
  • Google colab
  • opencv 4.1.2

2. 程式流程

先將雲端硬碟掛載於colab上。
from google.colab import drive
drive.mount('/content/gdrive')
引入opencv並查看版本資訊。
import cv2
from google.colab.patches import cv2_imshow
print(cv2.__version__)
用imread讀入雲端硬碟中圖片,並用imshow查看是否讀入和顯示
imgin = cv2.imread("/content/gdrive/MyDrive/yzu/影像處理/bookGray.jpg",0) #讀取灰階原始圖片
cv2_imshow(imgin)
查看圖片的shape,並根據shape用numpy中的np.zero()產生像素點矩陣,並將每個點像素值加120.整體圖片效果會變亮。
import numpy as np
imgnum=np.zeros((688,688),imgin.dtype)+120
imgnew=cv2.add(imgin,imgnum)
cv2_imshow(imgnew)
使用numpy中的np.concatenate()將原始圖片與變亮的圖片連接顯示,更方便觀察。
最後用imwrite存入雲端資料夾中。
image = np.concatenate([imgin, imgnew],axis=1)
cv2_imshow(image)
cv2.imwrite("/content/gdrive/MyDrive/yzu/影像處理/graycon.jpg",image)
因opencv中3個channel的順序為B,G,R。所以這裡是imgRGB(i,j,2):i和j為圖片的每個像素點,而2代表則是R channel。np.clip()是限制像素值在0-255之間。
#opencv2 :b,g,r
num=np.zeros((512,512,3),imgin.dtype)
for i in range(imgRGB.shape[0]):
for j in range(imgRGB.shape[1]):
imgRGB[i,j,2]=np.clip(imgRGB[i,j,2]+100,0,255) #
cv2_imshow(imgRGB)
cv2.imwrite("/content/gdrive/MyDrive/yzu/影像處理/RGB.jpg",imgRGB)

3. 圖片執行結果

左圖為原圖,右圖為+100結果












左圖為原圖,中間為R+100,右圖為R-100











4. demo影片







s1073318 作業1

 一、 作業說明 

輸入圖片路徑、欲調整數值,若圖片為灰階調整亮度,若圖片為彩色則只調整R值。調整後數值超出8bit範圍(0~255)則調整為最大值或最小值。

二、 作業環境

Windows 10

OpenCV 4.5.5

Visual Studio 2017

三、 實作方法

1.      輸入圖片路徑及欲增加的數值,判斷是否為灰階圖片。

2.      灰階圖片調整b, g, r值,彩色圖片僅調整r值,超出8bit表示範圍(0~255) 則調整為最大值或最小值。

3.      顯示原圖以及修改後的結果。


Function:

bool IsGrayScale(Mat src): 判斷是否為灰階圖片

Mat AddImgValue(Mat src, int b, int g, int r):src的每一pixel加上(b,g,r),若調整後數值超出8bit表示範圍(0~255)則調整為最大值或最小值。

四、 執行結果

灰階圖片+100

灰階圖片-100

灰階原圖

彩色R值+1000(最大值255)

彩色R值-1000(最小值0)

彩色原圖


2022年2月21日 星期一

s1073328 作業1

    1. 作業說明:


    • 圖像亮度調整

                    撰寫程式讀取圖片, 將每個像素值加上一個數值,改變亮度。

                    若為灰階圖像,需改變像素的灰階值;若為全彩圖像,只改變像素的R值。

                    像素值介於0到255之間。


    2. 開發環境:


    • Windows 10

    • Visual Studio 2017

    • OpenCV4.5.5

    3. 程式流程:


    • 首先,輸入圖片完整路徑及名稱,並利用imread()讀取圖片。

                    👉 若是讀取失敗,將跳出提示,並結束程式。

    • 接著,輸入欲增減的亮度值。正值為調亮,負值為調暗。 

                    👉 因為此程式在全彩圖中將只會修改R值,所以若輸入正值將會偏紅。

    • 最後,用imshow()展示出原圖以及調整亮度後的圖片結果。

                    👉 若經過修改後的數值溢位,將藉saturate_cast<uchar>()調整。

                           當underflow,數值設為最小值0;當overflow,數值設為最大值255。
                    
                    👉 下列為調整圖像對比度及亮度的公式
                            

    4. 執行結果:


    • 灰階圖像

調暗(-125)

原圖

調亮(+125)


實作影片




    • 全彩圖像


減少R值(-125)

原圖

增加R值(+125)


實作影片